0

私は最近のリストで同様の問題に遭遇しました。アプリが完全に破壊されるいくつかの条件があるように見えますが、他のプロセスによって、使用されていた最後のアクティビティからアプリがコールド起動されます。私のアプリには、指定されたいくつかのアクティビティで構築された状態があるため、これを防ぐ必要があります (つまり、onCreate() からの null 参照)。

状態をチェックしないと、すべての onCreate() 関数がこれを防ぐ方法はありますか?

また、ランチャー、最近使用したアプリ、他のアプリの戻るボタン以外にも、意図的に明示的にアプリを起動する許可をマニフェストに与えていない場合、別のアプリがアプリを起動できる条件はありますか?

ありがとう!

4

1 に答える 1

0

私がこれを正しく理解していれば、アクティビティ A がそれらを渡したことに依存するアクティビティ B の初期化があります。インテントがアクティビティ B を最初に起動する場合、それがアクティブになっていないか、A によって最初に起動されていない場合、アクティビティはクラッシュします。

私が思い付くことができる最も簡単な解決策は、あなたのアクティビティA(私はあなたのメインアクティビティを想定しています)を処理したいすべてのインテントのブロードキャストリスナーにし、インテントアクションに基づいて、適切な子アクティビティ(B、Cなど)にディスパッチすることです)。そうすれば、アクティビティ A がすべての初期化を行い、適切なアクティビティを起動して、元の目的を処理することができます。

あるいは。子アクティビティが無効な状態にあることを検出した場合は、すべてのアクティビティの拡張元である親アクティビティに初期化を入れることができます。そうすれば、アクティビティが新規起動の場合に適切に初期化できるはずです。私はこれが好きというわけではありません。アクティビティに適切なデータが依存性注入されていることを確認することを好みます。

于 2013-03-28T21:12:44.730 に答える