2013-04-17 57 views
2

我使用了postedDelayed方法來刷新我的Activity,這很好。但問題是,即使我按返回鍵postdelayed方法調用回以前的活動..帖子延遲方法 - Android

//處理程序活動的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(); 
    } 
+1

這裏 – stinepike

+0

發佈您的代碼,請發表您的代碼........檢查問題 – androidgeek

回答

4

您可以使用removeCallbacks(runnable)方法使用您正在調用postDelayed()方法的處理程序。例如,如果你使用:

mHandler.postDelayed(mRunnable, mTime) 

刷新的活動,然後在活動的onPause()方法使用

mHandler.removeCallbacks(mRunnable) 

+0

它仍然使應用程序崩潰,我沒有得到任何日誌。 –

0

製作的標誌布爾在你的postdelayed方法。將符號初始化爲true,當完成活動時,將符號的值設置爲false。

+0

你的回答不清楚。也許一個代碼示例會讓這個更容易理解。 –

0

您可以使用這段代碼在延遲3秒後運行。

new Timer().schedule(new TimerTask() {   
    @Override 
    public void run() { 

     // run your code here  

    } 
}, 3000);