どうも。どっことです。今回はスタックに積まれているActivity
をすべて終了させるメソッドを紹介します。
裏のActivityもすべて終了するfinishAffinity
Activity A
からActivity B
にstartActivity()
でスタックを積んだとき、Activity
A
が明示的に自身をfinish()
させなければ、Activity B
の裏にActivity
A
はスタックとして存在します。
そしてこのときActivity B
でfinish()
を呼び、自身を終了させても、スタックに残っているActivity
A
が表示され、アプリを終了することができません。
今回は、Activity
B
からスタックにいるすべてのActivity
を終了させるメソッドを紹介したいと思います。
Activity#finishAffinity()
すべてのActivity
を終了させるにはfinishAffinity()
というメソッドを使います。単純なケースであれば、このメソッドを呼び出すことで裏にいるActivity
をすべて終了することができます。
単純なケースと書いたのは、Activity
には親和性(affinity
)という概念があるためです。これが厳格に管理されているActivity
ですと、今回のケースは期待した動作をしない可能性があります。
ただし基本的に同一のAndroidアプリという領域のActivityであるためaffinity
が厳格に管理されているケースは非常に稀で、まずはやりたいことが実現できるかをこのメソッドを呼んで試してみるのが解決への一番の近道になるかと思います。