7

postedDelayed メソッドを使用してアクティビティを更新しましたが、これは正常に機能します。しかし、問題は、[戻る] ボタンを押しても、postdelayed メソッドが前のアクティビティをコールバックすることです..

// 30000 ミリ秒のアクティビティのポスト遅延更新のハンドラー

mHandler.postDelayed(new Runnable() {
public void run() {
               dostuff();

        }
            }, 30000);
    }

protected void dostuff() {
Intent intent = getIntent();
finish();startActivity(intent);
Toast.makeText(getApplicationContext(), "refreshed", Toast.LENGTH_LONG).show();
}

public void onBackPressed() {
        super.onBackPressed();
        finish();
        mHandler.removeCallbacks(null);
        }

protected void onStop() {
            mHandler.removeCallbacks(null);
        super.onStop();
    }
4

3 に答える 3

1

mHandler.removeCallbacks(null);. パラメータとして null を渡しています。Runnable onject を渡します。それはうまくいくはずです。

public final void removeCallbacks (Runnable r)

上記を使用します。

API レベル 1 で追加 メッセージ キューにある Runnable r の保留中の投稿を削除します。

http://developer.android.com/reference/android/os/Handler.html#removeCallbacks%28java.lang.Runnable%29

編集:例

Runnable runnable = new Runnable() {
@Override
public void run() {
    // execute some code
}
};

Handler handler = new Handler();  
handler.postDelayed(runnable, 10000);
handler.removeCallbacks(runnable);
于 2013-04-18T03:33:14.697 に答える