回答

9

不需要需要服務。我感覺像一個破碎的記錄。在這種使用情況下,95%的服務都會在那裏無所事事,但仍然使用系統資源,更重要的是耗盡電池。

請參閱使用來自AlarmManager報警類似的問題我的回答:

Running task periodicaly(once a day/once a week)

編輯:

看從Android開發網站如何實現通知本教程: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

+0

是的。這是正確的方法。 – njzk2 2012-02-10 11:48:47

+0

格雷厄姆,所以會有一個.apk專用的apk只是爲了顯示通知? – 2012-02-10 12:16:33

+0

您可以將所有代碼放入單個項目並作爲單個APK進行部署。 – 2012-02-10 12:38:32

0

定義一個帶有定時器的線程的服務,在超時時調用webservice。

+1

相同的評論如下。 – njzk2 2012-02-10 11:48:23

2

使用計時器,您可以在有限的時間間隔後調用該Web服務的e.x

Timer waitingTimer = new Timer(); 
    waitingTimer.schedule(new TimerTask() 
    { 
     @Override 
     public void run() 
     { 
      runOnUiThread(new Runnable() 
      { 
       public void run() 
       { 
        // code to hit xml after time interval 
       } 
      }); 
     } 
    },0,20000); // mention time interval after which your xml will be hit. 

這裏20000表示每隔20秒後,它會被擊中。

+1

一個線程絕對不是這個在android中去的方式。它會坐在那裏無所事事,那不好。使用警報管理器而不是 – njzk2 2012-02-10 11:48:04

6

還有Google提供的Cloud to Device Messaging服務C2DM。您可以使用此服務將消息推送到所有註冊的移動設備。這不僅可以提高性能,還可以確保在連續輪詢服務器時不會耗盡電池電量。

對於您的方案,您可以在java類中編寫定期輪詢Web服務並使用C2DM服務將消息推送到可以顯示爲通知的Android手機。看看沃格拉在link上的這篇教程。或者,如果您只是爲了獲取更新的細節而使用Web服務,那麼您可以避免使用Web服務,並在有變更時直接調用C2DM Push服務將消息推送到所有註冊的設備。

希望這有助於。 :)

+2

對於未來的搜索者:C2DM已被棄用並被GCM取代:http://developer.android.com/guide/google/gcm/index.html;遷移指南:http://developer.android.com/guide/google/gcm/c2dm.html – paul 2012-08-21 21:01:26

+0

有關未來的進一步參考資料,GCM現在是FCM(Firebase雲消息傳遞)。以下是遷移指南:https://developers.google.com/cloud-messaging/android/android-migrate-fcm – 2017-10-19 13:43:08