2011-08-06 44 views
2

在我的應用程序中,我基本上需要在後臺執行兩項任務。一個是與php服務器同步一些數據,定期發送值並更新本地數據庫和答案,另一個是主服務器從服務器請求的下載文件,當下載完成時通知UI。如何在Android中實現後臺任務

我只想在應用程序處於前景時執行這些操作。如果用戶打開另一個應用程序,則完成當前事務並停止消耗資源。

在這一點上我有點失落如何實現這一點。我從來沒有使用服務,我真的不知道服務是否是一個有效的解決方案,由於該服務是用來當你的代碼仍然運行時,應用程序轉到後臺。

其他解決方案我以爲是實施某種處理程序,週期性地(例如20分鐘)啓動一個線程與服務器同步。在請求下載時也啓動一個線程,並在最後發送一個廣播。

那麼解決方案呢?已驗證?如果是的話,我該如何檢測應用程序(而不是活動)何時停止在前臺進行蜂鳴來清理處理程序的帖子?

在此先感謝

+0

您是否找到了解決方案?如果是,你可以分享嗎? – Prabhakar

回答

1

如果你選擇了服務,我建議你使用IntentService http://developer.android.com/reference/android/app/IntentService.html

當你實現onHandleIntent你可以有一個循環,等待你想讓它的時間量睡眠,醒來後它可以執行你想要的任務。

@Override 
protected void onHandleIntent(Intent intent) { 
    while(true) { 
     yourBackgroundTask(); 
     // Sleep 
     try { 
      wait(WAIT_TIME); 
     } catch (Exception e) { 
      Log.i(TAG, e.getMessage()); 
      break; 
     } 
    } 
}