web-dev-qa-db-ja.com

Android:finish()は常にonDestroy()を呼び出しますか?

簡単な質問:finish()onDestroy()を呼び出すことを確認できますか?これに関する確認は見つかりませんでした。

22
Xander

簡単な質問:finish()がonDestroy()を呼び出すことを確認できますか?

まず、この答えは、AndroidのActivityクラスとそのfinish()メソッドおよびonDestroy()ライフサイクルメソッドを参照していることを前提としています。

第二に、それはあなたの「sure」の定義に依存します:

  • finish()への呼び出しをトリガーするものとは無関係の理由で、プロセスはonDestroy()finish()の間で終了する可能性があります

  • デバイスの製造元またはROM modderは、finish()onDestroy()の間の接続を切断するような厄介な変更を導入する可能性があります

  • finish()onDestroy()の間でバッテリーが切れる可能性があります

  • 等。

第三に、finish()callonDestroy()をしません。 ソースコード を読むことでそれを知ることができます。 finish()通常、onDestroy()への呼び出しをトリガーします。

一般的に、finish()は最終的にonDestroy()が呼び出されます。

46
CommonsWare

いいえわかりません!

Finish()を呼び出すと、通常、アクティビティライフサイクルに従ってonDestroy()がトリガーされますが、これに依存することはできません。特にデータを保存するためではありません。 ドキュメント 明確に言う

do not count on this method being called as a place for saving data! 
6
Aniket Thakur