2012-02-27 106 views
0

我創建了一個web服務,我想用一個android手機作爲終端。 手機必須每隔一段時間檢查web服務上的消息。Android服務在後臺

是否有可能創建一個「後臺任務」或服務,每隔一段時間檢查特定的web服務? 這不是電子郵件的工作方式嗎?應該是可以的。 如果沒有,我怎樣才能創建一個「推」服務,達到android手機?

我創建了一個簡單的服務,但它只運行幾分鐘,然後「停止」與服務器通話。看起來像是在屏幕鎖定時發生。

我有一個類,它擴展了服務。我重寫下面的方法。

@Override 
public void onStart(Intent intent, int startId) { 
    Toast.makeText(this, "Service started", Toast.LENGTH_LONG).show(); 
    Log.d(_TAG, "onStart"); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     public void run() { 
      Log.d(_TAG, "running task!! Hello :)"); 
      try { 
       sendSMS(); 
      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }, 0, 60000); 
} 

工程就像一個魅力,直到顯示被鎖定。

這款手機是一款HTC Desire S的

我很新到Android的研究與開發,不知道爲此框架。

Regards ..

+0

是的,這是可能的。 – 2012-02-27 23:10:24

+0

你有什麼例子嗎?框架使用? .. – hogni89 2012-02-27 23:11:21

+0

沒有框架需要一個簡單的任務,如投票。創建後臺服務 - >查詢URL - >解析響應 - >利潤( - >重複)。你有一些研究在你面前。 – 2012-02-27 23:17:40

回答

1

首先,您需要決定將數據推送到設備還是從設備上拉數據。取決於您的決定實施變化。

您可以創建後臺服務將繼續輪詢每x分鐘後拉你的數據,

試試這個博客帖子http://www.zubha-labs.com/android-services-101-part-1,詳細瞭解服務,並具有源代碼的實際執行。

或者

使用Android C2DM http://code.google.com/android/c2dm/從服務器推。

+0

想拉。你有這方面的例子或教程嗎? – hogni89 2012-02-27 23:12:12

+0

剛剛更新後的例子看看。另外我建議你閱讀這個博客http://zubhium.posterous.com/whats-the-right-way-to-beta-test-your-mobile關於建設踢屁股android應用程序的整體偉大的指針。 – kodeshpa 2012-03-02 00:31:53

0

完全可以創建背景Service

但是,如果服務的主要目的是定期檢查服務器是否有新消息,那麼更適合使用推送服務的電池壽命。谷歌有一個名爲C2DM,目前免費。

+0

我一直在推動..我需要拉動。 – hogni89 2012-02-27 23:13:14

2

正如其他海報指出的那樣,通過基於推送的方式接收意圖會更適合您的應用程序,因此您不會浪費資源不斷地進行投票。

但是,如果您需要在某些指定的時間間隔輪詢和/或執行某些代碼,那麼Alarm Manager就是您想要的。您註冊您的應用程序將在某些時間點被調用,這是您啓動服務來輪詢數據的時間。

http://developer.android.com/reference/android/app/AlarmManager.html

+0

看起來很有希望。稍後再看這個:) – hogni89 2012-02-27 23:43:27