2

私は、独自の状態管理の一部を実行するアクティビティを開発しています。次のonResumeケースを区別しようとしています。

  1. 新発売
  2. タスクスイッチ(ホームボタンロングクリック)
  3. 同じアプリケーションで他のアクティビティを実行した後に再開する
  4. 睡眠後の目覚め
  5. 向きの変更

アクティビティの意図や他の場所で、これらを区別するのに役立つ何かがありますか?

好奇心旺盛でいくつかのコンテキストのために...4と5で内部履歴スタックを保持したいです。ケース2と3では、同じ現在のページを保持しますが、履歴を消去します(通常の戻るボタン機能を許可します。その時点で引き継ぎます)。ケース1は、アクティビティの内部スタートページに初期化されます(onCreateの助けを借りれば、簡単に検出できます)。

4

1 に答える 1

1

これらを区別するのに役立つアクティビティの意図または他の場所に何かがありますか?

項目 #4 は、私の知る限り、 とは何の関係もありませんonResume()

アイテム #5 は経由でより適切に処理さandroid:configChangesonConfigurationChange()ますが、から何かを返し、経由onRetainNonConfigurationInstance()でそこにあるかどうかを確認することで「検出」できます。onResume()getLastNonConfigurationInstance()

他のケースは 3 つのケースだけではなく、「RAM を解放するためにメモリから追い出される」などの可能性を考慮し始めると、おそらくその 2 倍になります。

袖口を外すと、いくつかの不幸なアーキテクチャ上の決定を行ったように感じます (「内部履歴スタック...履歴を消去...その時点で通常の戻るボタン機能が引き継がれるようにする」)。Android は多くの安価なアクティビティを中心に設計されており、あなたはその原則に違反しているようです。そうすることは大歓迎ですが、選択したパターンの Android サポートは制限される可能性があることに注意してください。

于 2010-08-24T23:41:44.067 に答える