2011-04-20 162 views
0

我有一個應用程序需要更新一個持續事件通知。通知有一個進度條,我需要每5分鐘增加一次。我使用處理程序,但有些事情困擾我,或者我根本不明白它們是如何工作的。Android處理程序問題

 if (progress<=24) 
      { 

    contentView.setProgressBar(R.id.status_progress,24,progress,false); 
    Toast.makeText(getApplicationContext(),progress, Toast.LENGTH_SHORT).show(); 
    progress++; 
    mnNotificationManager.notify(IS_PARKED_ID, notification); 
    mHandler.postDelayed(mUpdateTimeTaskProgressbar, 300000); 

      } 

這裏是代碼。看起來,當設備屏幕關閉時,通知沒有被更新。我過去曾經使用過處理程序,但據我記得,我每隔100毫秒就更新一次。所以我的問題是,處理程序是以何種方式暫停,停止並重新啓動,還是別的。你有沒有像wake_lock的建議。 在此先感謝,西蒙
編輯: 忘記提到這是所有從服務

回答

1

運行不時的GC運行以釋放內存,您的設備上。如果從UI線程運行,您的通知的更新程序也可能會收集。

我使用service來顯示正在進行的通知,這種方式我可以肯定,服務和通知都不會停止/收集。

我的活動和服務之間的溝通是我用處理程序解決的,但也有很多技巧。

+0

它從服務運行,忘記提及。事情是,這一直髮生,而不是一段時間。在這兩天我一直在測試這個,情況就是這樣。我正在考慮用計時器來解決這個問題。 – Simon 2011-04-20 13:34:12

+0

如果5分鐘是固定費率計劃,那麼您可以使用計時器,並且在tas的運行方法內,您可以收集必要的數據以進行更新。之後,您可以調用您的處理程序來更新進度條。 – rekaszeru 2011-04-20 13:37:39

+0

它是固定的,所以我想我會使用計時器。感謝您的幫助 – Simon 2011-04-20 20:58:53

0

默認情況下,處理程序在UI線程的相同進程中運行,所以我認爲您最好使用服務來更新進度欄。 在這種情況下,您想每5分鐘更新UI。您可以使用AlarmManager啓動警報服務來實現此目的。

+0

它從一個服務運行,但您不認爲使用AlarmManager過度使用它,因爲我必須處理廣播。 – Simon 2011-04-20 13:32:17