アプリケーションが閉じていることを検出するメソッドが必要です。これにより、Webサーバーに、格納しているセッション変数をクリアするように指示できます。それを行う方法はありますか?
5 に答える
あなたのアプリケーションがアクティビティを拡張すると仮定しています。
onDestroy()
次の方法を使用できます。
ドキュメントから:
onDestroy() は、アクティビティが破棄される前に受け取る最後の呼び出しです。これは、アクティビティが終了している (finish() が呼び出された) ため、またはシステムがスペースを節約するためにアクティビティのこのインスタンスを一時的に破棄しているために発生する可能性があります。これら 2 つのシナリオは、isFinishing() メソッドで区別できます。
コードは次のようになります。
public class YourAppActivity extends Activity {
...
...
@Override
protected void onDestroy() {
super.onDestroy();
//clear your session variable.
//you may want to do this quick, and on another thread
//to prevent android from killing your app
}
}
アクティビティのonDestroy()メソッドを使用して、 isFinishing()メソッドでメモリが不足しているために、ユーザーがアプリを終了しているか、OSがプロセスのアクティビティを強制終了しているかを確認します。「Webセッションの破棄」ロジックをデプロイするには、IntentServiceを開始してこのアクションを開始します。
それが役に立てば幸い。
アクティビティのライフサイクルを確認
してください。onDestroy()
onDestroy()
アプリがシステムによって破棄されているonStop()
とき、またはアプリが可視性を失ったとき (多くの場合、破棄する前) にどちらを実行するかを試すことができます。コードは次のようになります。
public void onDestroy() {
super.onDestroy();
//Enter your code here to do stuff
}
ただし、アプリを破棄すると、アプリで使用されている変数も一緒に破棄されます。
このためには、整数型のカウンターの静的変数を作成する必要があります。OnCreate メソッドでは変数を 1 インクリメントし、OnDestroy() メソッドでは変数値をデクリメントします。および OnDestroy() メソッドで、静的変数の値が 0 であるかどうかを確認し、0 の場合は Web サービスを呼び出してセッションをクリアします