0

私たちの活動のほとんどは、ユーザー固有のモデルにアクセスします。これらのアクティビティはすべて、getModel() 呼び出しを提供する ModelActivity 基本クラスから継承されます。これらのアクティビティの 1 つが (AccountManager コールバックを介して) ユーザーがサインアウトしたことを検出すると、既存のモデルに固執しますが、FLAG_ACTIVITY_CLEAR_TOP でインテントを開始することにより、ルート アクティビティ (ユーザー固有ではない) に戻る準備をします。

ただし、アプリが実行されていないときにユーザーがアカウントを削除すると、アクティビティが復元されたときに問題が発生します。アクティビティは、モデルがないことを処理する必要があるため、コードがより複雑になり、バグが発生しやすくなります。

理想的には、アクティビティが作成される前に、アプリケーションの復元プロセスをインターセプトします。次に、アカウントとモデルがあるかどうかを確認し、そうでない場合は、保存されたアクティビティのスタックをクリアし、最後に保存されたアクティビティではなく、ルート アクティビティから再開します。しかし、コードを実行できる最初の場所は、アクティビティの onCreate コールバックです。

アプリケーションがバックグラウンド保存から復元されたときに、保存されたアクティビティが作成される前にコードを実行する方法はありますか?

4

2 に答える 2

0

Serviceアクティビティを監視するを実装することをお勧めします。新しいものを作成すると、復元されたかActivityどうかが常にわかりますActivity

于 2013-10-28T22:11:14.357 に答える
0

私はこれについて完全には確信が持てず、実装したこともありませんがApplication.ActivityLifecycleCallbacks、クラスを拡張してregisterActivityLifecycleCallbacks.

これらのコールバックは、Activity コールバックの前に呼び出されます。

于 2013-10-28T22:01:28.663 に答える