2012-07-10 4 views
8

アクティビティが破壊されたかどうかを知る適切な方法は何ですか?現在、私は以下の方法を使用しています。アクティビティが破壊されたかどうかを確認する適切な方法

private volatile boolean isOnDestroyCalled = false; 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    isOnDestroyCalled = true; 
} 

public boolean isOnDestroyCalled() { 
    return this.isOnDestroyCalled; 
} 

上記以外の方法はありますか?

+0

私はあなたの問題をかなり理解していませんが、あなたはこれを知りたいのですか?あなたはその活動をdestryoingしていますか? いつでもFinish()をトリガーできます。それを破壊する。ここにいくつかの助けがあります http://developer.android.com/reference/android/app/Activity.html – najk

+2

アクティビティのコールバックをトリガした非同期タスクがあったため、これを知る必要がありました。その間。私の回避策は、アクティビティのコールバックへの参照、コールバック内のアクティビティへの参照を保持し、アクティビティが破棄されているときにコールバックのrefをnullにすることで、nullの場合はコールバックが何も実行しないようにしました。 – qix

+0

@Linusこれまでに知られている最もよく知られている技術は、保持されたインスタンスのフラグメントを使用することです:http://stackoverflow.com/questions/8417885/android-fragments-retaining-an-asynctask-during-screen-rotation-or-configuratio –

答えて

3

これはうまくいきますが、他のアプリケーションが優先される時間が非アクティブな場合は、OSがアプリケーションを停止することがあります。確かに私はそれがあなたのケースではメインメモリに行く揮発性を使用していた場合でも、変数が無効化され、確実ではないと知っている。しかし、正しい値を得られるかどうかを確認する方法の1つは、SharedPreferencesに保存することです。

+2

それは良いアプローチではないようです! –

関連する問題