2016-03-18 10 views
0

ユーザが値ペアにログインすると、SharedPreferenceに追加されます。 Appsが強制終了されると、ユーザーをログアウトして次の起動時に再度ログインする必要があります。 ユーザが1つのアクティビティから別のアクティビティに切り替わり、再度主活動に戻ると、彼はログアウトされます。ログアウトユーザが殺されたときのユーザ

問題は、MainActivityのonStopが呼び出され、SharedPreference内のエントリの設定が解除されることです。 アクティビティを切り替えるときにエントリを残したいが、アプリケーションが終了/強制終了されたときに設定が解除される。

答えて

2

onStop()の代わりにonDestroy()を試してください。アクティビティが表示されていないときはonStop()が呼び出され、アクティビティが破棄されるときはonDestroy()が呼び出されます。

+0

'OnDestory()'を呼び出して新しい 'Activity'を作成できるので、あなたの' Activity'の設定によっては回転に注意してください。 'android:configChanges =" orientation "' –

+0

を理解したいと思うかもしれません。なぜonDestroyが即座に呼び出されるのか理解できません。 – newclear

+0

デバイス上の戻る矢印でアプリケーションを終了すると、onDestroyはimmediatly呼び出されますが、開いているすべてのアプリケーションを表示してスワイプして閉じると、 – newclear

1

私が見つけたこれを行う唯一の保証された方法は、Application.ActivityLifecycleCallbacksを実装するクラスを作成することです。開始、停止、再開、および破棄されたアクティビティのカウンタを保持するために必要なメソッドを実装します。

あなたがクラスを実装したら、あなたはこのようなあなたのアプリケーションクラスの実装では、あなたの実装を登録することができます始めた活動の数が破壊活動の数に等しいとき

registerActivityLifecycleCallbacks(new MyLifecycleHandler()); 

、あなたがログインするためのメソッドを呼び出すことができますユーザーからまたは、単一のカウンタを保持し、アクティビティの開始時にインクリメントし、インクリメントします。同じ違いです。

この同じ戦略を使用して、アプリがフォアグラウンドにあるかどうかを判断できます。

関連する問題