web-dev-qa-db-ja.com

フラグメントライフサイクル:「ondestroy」および「ondestroyview」が呼び出されない場合

このシナリオを想像してください:FragmentPagerがあります。ページャー(およびフラグメント)を所有しているActivityが停止し、最終的に一時的に破棄されるように、他のアプリに切り替えようとします。

したがって、アクティビティに戻ると、FragmentのコールバックonCreateoncreateviewなどが呼び出されます。しかし、フラグメントのonDestroyコールバックは以前に呼び出されませんでした! 「onStop」の後、フラグメントはすぐに破棄されるようです。それは正常な動作ですか? ActivityonDestroyを呼び出さずに破棄されたためでしょうか?

31
Bertuz

この質問を見てください: なぜ呼び出されることが保証されていないのにonDestroy()を実装するのですか?

基本的に、onDestroy()は、finish()を呼び出した場合にのみ呼び出されることが保証されています。そうしないと、システムが必要と判断するまでonDestroy()が呼び出されない場合があります。代わりに、「閉じる」ロジックをonPause()またはonStop()に配置することを検討してください。

39
invertigo