ライフサイクルを何年も信頼した後、私は少し掘り下げました。今、私は面白がっていません。
私はそれについてたくさん知っていて読んでいますonStop
が、呼ばれることが保証されているわけではありません。
2つのActiviteとカスタムApplicationクラスを使用して単純なアプリを作成しました。私は、4.1を搭載したGalaxy S2で見つけて遊んだすべてのコールバックに、Log.d()を配置しました。アクティビティAは開始時に起動し、その中onResume
でアクティビティBを開始します。アクティビティBには、Nullpointerを作成するボタンがありますが、それ以外の場合は何も実行しません。
今私を心配/混乱させるもの:
buttonclickでnullpointerを作成すると、アプリがクラッシュし、どちらのアクティビティでもコールバックが発生しません
電源ボタンを押して画面をオフにすると、アクティビティの表示モード(縦向きまたは横向き)がデバイスのネイティブの向きと一致しない場合、アクティビティが再開されます。私はそれとどのようにそれをオーバーライドできるかを知っていますが、それが私の活動を破壊して再開した場合、それは呼び出してfalse
onPause
をisFinishing()
返しますが、活動は終了して再開されています。上記が発生しない場合は
onPause
、アプリが表示されなくなっても呼び出されているだけですAで別のアクティビティ呼び出し
onPause
を開始し、次にBを作成してからAのonResume
呼び出しを作成しますonStop
。現在、.Appクラスでアクティビティを追跡しています。Aを登録解除しonPause
てBを登録onResume
すると、アクティビティが登録されないミリ秒が分割されます。 。アクティビティがないときにサービスをシャットダウンしたい場合、それは常に発生します。しかし、登録を解除するとonStop
(重複するため)、ユーザーが電源ボタンを押してサービス(またはスレッドなど)が実行を続け、バッテリーの電力を消費しても、登録が解除されることはありません。
私はかなり長い間Androidを使用していて、かなり複雑なデザインを実現しようとしています。しかし、私の活動に何が起こっているのかを追跡することはほとんど不可能です。
パワーダウンはIntent.ACTION_SCREEN_OFFを介して検出する必要がありますが、それはすでにオフになっている場合に発生します。その前の唯一のものはonPauseです。
ホームボタン...onUserInteractionと一時停止/停止の組み合わせ
私のAPP(1つのアクティビティだけでなく)が使用されなくなってバックグラウンドに置かれたとき、およびアクティビティ間を移行したとき、またはシステムによってシャットダウンされたときを簡単に判断するのは非常に困難です。.AppクラスにはonTerminate()
、エミュレーターでのみ使用される終了のコールバックがないため、ドキュメントには記載されています。
たぶん、木々の間から森が見えないだけなのかもしれません...助けていただければ幸いです!