私はいくつかの奇妙なバグを示しているアプリを持っています。アプリは、一部のグローバルデータがnullであり、nullではないはずの状態になります(アプリのロジックを見ると、その状態に到達する方法はありません)。OSがそれ自体でグローバルデータを上書きしているか、アプリを再起動(またはアプリを起動)して最初のアクティビティをバイパスしているのではないかと疑っています。これらのシナリオのいずれかが可能ですか?(もちろん、私の論理は常に間違っている可能性がありますが、この時点で私は本当に何か他のことが起こっているのではないかと疑っています)。
4 に答える
はい、これは実際にはさまざまな場合に予想されます。
アプリケーションがバックグラウンドに移行し、Androidがリソースを再利用するためにアプリケーションを強制終了した場合、その後のアプリケーションへの復帰はユーザーにはシームレスに見えるかもしれませんが、実際にはまったく新しいアプリケーションプロセスで発生します。戻るのは、彼らが最後に行ったアクティビティに直接戻りますが、新しいプロセスです。パッケージ内の他のアクティビティ(ランチャーアクティビティなど)のonCreate()は、それらのアクティビティがユーザーナビゲーションまたはどこかからのインテントによって明示的に再アクセスされない限り、呼び出されません。
ランチャーアクティビティ(つまり、android.intent.category.LAUNCHERを使用したもの)は、アプリケーションに含めることができる唯一のエントリポイントではありません。多くのアプリケーションには、android.intent.category.DEFAULTのカテゴリと処理できるコンテンツのタイプの仕様でandroid.intent.action.VIEWを処理するように登録するインテントフィルターを持つアクティビティが含まれています。この種のアプリケーションには、パッケージにランチャーアクティビティがまったく含まれていない場合があります(ただし、コンテンツの参照、構成オプションの設定、またはその他の機能のためにランチャーアクティビティが含まれている場合があります)。
Can Android OS start app with different Activity than Launcher Activity?
いいえ、最初は常にランチャータグを使用してアクティビティを検索します。
コードを追加し、どのグローバルデータがnull値を取得しているかを特定します:)
私はそれを非常に疑っています。ランチャーの考え方は、OSから起動インテントを受け取るアクティビティを定義することです。
あなたが説明した行動から推測して、あなたは活動のライフサイクルについていくつかの研究をしたいかもしれません。
ランチャーは、アプリケーションの起動時に起動されるアクティビティを識別するために使用されます....だから私はそうは思わない...