29

アプリケーションのプロセスが強制終了されると、そのアクティビティ スタックが保存されます。その後、アプリケーションを再起動すると、すべてのアクティビティが再開され、null ポインターが発生します。このイベントに対応するためにすべてのアクティビティを変更するのではなく、アプリケーションをベース アクティビティから開始し、アクティビティ スタックを再作成しようとはしません。

これは可能ですか?

私は Intent.FLAG_ACTIVITY_CLEAR_TOP について知っていますが、私が理解しているように、アクティビティが再作成された後にのみアクティビティを強制終了します。

編集: clearTaskOnLaunchは私が欲しいものですか? デフォルトのアクティビティに追加しましたが、効果がありません。しかし、アプリケーションを最小化したとしても、これは私のアクティビティを殺してしまいますよね? プロセス全体が再起動している場合にのみ、スタックをクリアしたいと思います。

編集 2: いいえ、それは私が望んでいるものではありません。Android エンジニアが、ClearTaskOnLaunch の使用方法に関するいくつかの質問に完全に回答しました: http://groups.google.com/group/android-developers/browse_thread/thread/da024bcaf4e1960f/ab1e2b35c360cb65 ?プリ=1

4

5 に答える 5

9

私が見つけた唯一の解決策は、onCreate() のすべてのインスタンスでグローバルな静的変数をチェックし、その変数が null にリセットされていれば終了し、タスクが再開されたことを示すことでした。ルート アクティビティまでのすべてのアクティビティを閉じて、最初からやり直します。

すぐに、onPause() で必要な値を保存できるようにアプリを作成したいと考えていますが、それまでは、失われた初期化を処理するために知っている唯一の信頼できる方法です...

于 2011-04-22T17:21:05.753 に答える
0

これはネイティブの Android ツールを扱う際に考慮すべきことですか、それともサードパーティのタスク キラーによって提起された問題ですか? 少なくとも「強制停止」を使用するエミュレーターでは、アクティビティ スタックがリセットされるようです。これは、アプリケーションが終了したときに常に発生すると予想していたことです。

于 2011-04-03T00:56:56.650 に答える