致命的ではないバグですが、原因が分かるまでかなり時間を使ってしまったので、残しておきます。
発生条件
- 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!
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さん、情報提供ありがとうございます )