2012-03-09 123 views
1

在我的應用程序中,我被要求添加自動更新功能。我想要做的是有一個計時器事件,以便如果用戶在最近60秒內沒有按下更新按鈕,請執行'refreshButton.performClick();'。每60秒編程一次'按'按鈕

我一直在尋找stackoverflow(和谷歌搜索),但我找不到一個定時器與用戶界面交互的例子。我不斷收到類似'只有創建視圖層次結構的原始線程'的錯誤。

如果用戶確實按下按鈕,我想重置計時器。

這甚至可能嗎?

TIA

+0

粘貼您現有的代碼,以便我們可以幫助您修改/擴展它 – waqaslam 2012-03-09 13:02:54

回答

3

您只能aView從UI線程交互。

你可以在你的計時器任務中做出這樣的事情;

  • 在類中定義這個變量:

    Handler handler = new Handler();

  • 在你的計時器任務調用:

    handler.post(new Runnable(){ 
         public void run(){ 
          refreshButton.performClick(); 
         } 
        }); 
    
+0

甚至更​​好,調用'handler.postDelayed(runnable,60000);'。完全避免定時器。 – Jave 2012-03-09 13:17:03

0

您可以使用AlaramManager類和後臺服務到每60跑秒你的代碼。

Here就是一個例子看AlarmService_Service.java

+0

即使應用程序退出,這也會導致更新發生。 sgallegos答案是更好,更容易實施。 「Alarm Manager適用於您希望在特定時間運行應用程序代碼的情況,即使您的應用程序當前未運行」 – Jave 2012-03-09 13:07:34

+0

您可以簡單地停止onDestroy方法中的alaram服務。 – Sunny 2012-03-09 13:11:33

+0

@ Jave你是對的sgallegos方法更好,並且易於實現。 – Sunny 2012-03-09 13:16:46

2

我認爲你在錯誤的方向去。不要試圖按下按鈕,只需設置一個計時器來調用一旦按下按鈕後調用的相同方法,它將使其更簡單,並且不會無緣無故地涉及UI。

+0

嗯,這是一個很好的觀點,但是我現在正在努力 – user1174838 2012-03-09 13:15:41