23
20

More than 5 years have passed since last update.

Android 7.0でonStop()、onDestroy()が呼ばるのが遅れるバグ

Last updated at Posted at 2016-09-29

致命的ではないバグですが、原因が分かるまでかなり時間を使ってしまったので、残しておきます。

発生条件

  • 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表示

onStopが遅れる
Android7.0withProgressBar.gif

Android 7.0 (Nexus 9) ProgressBar非表示

onStopが遅れない
Android7.0withoutProgressBar.gif

Android 6.0.1 (Nexus 5) ProgressBar表示

onStopが遅れない
Android6.0.1withProgressBar.gif

バグレポート

たぶん(?)Androidのバグだと思うので、バグレポートを上げてみました。
https://code.google.com/p/android/issues/detail?id=223871

何か間違い・勘違いがあったら教えていただけると嬉しいです :bow:

追記

Android 7.1.1では、ProgressBarに関してはこの問題は解決しているようですが、回転アニメーションなどがあると引き続きこの問題は発生しています。

(hackugyoさん、情報提供ありがとうございます :bow:

23
20
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
20