AccountManagerでアカウントを作成するアプリケーションがあるとしましょう。ユーザーは、このアプリケーションの非常に複雑なアクティビティグラフをしばらく調べてからAccounts and Sync
、Android設定に移動し、アカウントを削除してサインインします(Accounts and Sync
別のユーザーとしてログインしたままです)。
ブロードキャスト用の受信機を定義しましたが、LOGIN_ACCOUNTS_CHANGED
すべてのサービスを正常にシャットダウンできます。ただし、アクティビティはまだ存在し、ヘッダーに最初のユーザーの名前が含まれています(UIはさまざまな方法で混乱しますが、これが最も明白です)。
ですから、問題は、これらの孤児の活動について何をすべきかということです。
- のようなものを使用することもできます
clearTaskOnLaunch
が、変更が発生すると、すべてのアクティビティがバックグラウンドで実行されます。 - SharedPreferencesにフラグを設定し
onResume()
、各アクティビティをチェックインしてから、必要に応じてアクティビティを起動しclearTask
ますか?面倒すぎる。 - 私が思いついた最良のオプションは、
android.os.Process.killProcess(android.os.Process.myPid())
すべてのアクティビティを強制終了するために使用することです。これはあまり優雅ではありませんが、仕事は終わります。唯一の副作用は、アクティビティスタックがまだ存在していることです。最も合理的なのはLAUNCHER
、明確な履歴を持つアクティビティから開始することであると思われる場合です。
では、説明されているシナリオに対応するための最良の方法は何でしょうか?