Android 7.0でonStop()、onDestroy()が呼ばるのが遅れるバグ
致命的ではないバグですが、原因が分かるまでかなり時間を使ってしまったので、残しておきます。
発生条件
- Android 7.0 (Nexus 9) で確認
- Activity1にProgressBarを表示している
- Activity1からActivity2に遷移する
- バックキーをタップするなどしてActivity2を終了しActivity1に戻る
- 画面はActivity1に戻るが、Activity2のonStop()、onDestroy()がすぐに呼ばれない
- 10秒後にonStop()、onDestroy()が呼ばれる(そして次のような警告が出ている)
W/ActivityManager: Launch timeout has expired, giving up wake lock!
W/ActivityManager: Launch timeout has expired, giving up wake lock!
Activity終了時に「セーブしました」みたいなトーストを表示していたのに、表示されなくなったので気がつきました。
ProgressBarが表示されていないとこの問題は発生しません。また、Android 6.0.1 (Nexus 5)では発生しませんでした。
サンプルコード
動画
Android 7.0 (Nexus 9) ProgressBar表示
Android 7.0 (Nexus 9) ProgressBar非表示
Android 6.0.1 (Nexus 5) ProgressBar表示
バグレポート
たぶん(?)Androidのバグだと思うので、バグレポートを上げてみました。
https://code.google.com/p/android/issues/detail?id=223871
何か間違い・勘違いがあったら教えていただけると嬉しいです
追記
Android 7.1.1では、ProgressBarに関してはこの問題は解決しているようですが、回転アニメーションなどがあると引き続きこの問題は発生しています。
(hackugyoさん、情報提供ありがとうございます )
Author And Source
この問題について(Android 7.0でonStop()、onDestroy()が呼ばるのが遅れるバグ), 我々は、より多くの情報をここで見つけました https://qiita.com/oxsoft/items/dd854d053c13c902f2c7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .