2011-09-13 21 views
0

我想創建一些條件以在X時間後將用戶踢出活動。TimerTask條件後的Android開關視圖

我得到的總體思路:

  • 店當前的時間以毫秒爲單位,從日曆對象以毫秒爲單位
  • 確定我要多久用戶在活動
  • 添加如何長時間+存儲當前時間以確定什麼日曆時間以毫秒爲單位開始關閉該活動
  • 比較發起時間與當前時間(以毫秒爲單位)

最後一步,我發現最好的「時間收聽」我能找到的TimerTask的,因爲這樣實現:

protected void onPostExecute(Boolean success){ 

     kickout.schedule(new KickoutTask(), 5000); 

} 

class KickoutTask extends TimerTask { 
    public void run() { 
     Looper.prepare(); 

      replaceRootView(getLocalActivityManager().startActivity("myPreviousActivity", new 
       Intent(this, myPreviousActivity.class) 
       .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) 
       .getDecorView()); 

     Looper.loop(); 

    } 
} 

這是一個的AsyncTask,計數的最後一部分,「一次聽」實際工作,但是當涉及到更換視圖中run()方法,應用程序與

"Only the original thread that created a view hierarchy can touch its views."

崩潰我理解這個概念,但我不明白是怎麼回事時的分辨率,以獲得這一活動的計數在schedule功能。此外,我需要「替換」視圖,而不是僅僅使用「finish()」來執行此活動,因爲需要進行一些更新。

我想用另一種簡單的AsyncTask,但schedule功能需要一個TimerTask

洞察讚賞

回答

1

首先,你應該做這個任務在CountDownTimer

其次,你需要使用Handler更新來自其他線程的意見。

參見上HandlerAsyncTask本教程:

http://www.vogella.de/articles/AndroidPerformance/article.html

+0

你能否闡述一下我怎麼會用處理程序?我也遇到了run()方法中調用的崩潰。 CountDownTimer看起來很有趣。我將爲onPause和onResume實現條件,CountDownTimer是否協助完成此操作,併成爲Android函數? – CQM

+0

我編輯了處理程序的答案,是的,你可以使用onResume()和onPause()中的CountDownTimer。 –