2013-05-17 52 views
0

我將一個應用程序從C#移植到Android,我需要一些幫助來決定我需要在Android上使用哪種服務類型來實現相同的結果。Android服務選擇

目前theres 2獨立應用程序。更新程序和客戶端。 更新程序每5秒輪詢Web服務器的更新次數。只要有更新可用,它就會下載它,然後警告客戶端有新的可用內容。

客戶端然後在屏幕上顯示內容。

注意:該軟件將在Android播放器上運行,其唯一目的是運行這2個應用程序。而已。將不會有用戶與之交互。

所以我的問題是我需要什麼樣的服務?

親切的問候, NIEK

+0

http://developer.android.com/google/gcm/index.html – Selvin

+0

我很抱歉,但是這並不完全是我要找的。更新程序和客戶端必須都在Android設備上。 – Deejdd

+1

什麼?服務器進行了一些修改,然後發送GCM消息給安卓客戶端...客戶端將下載新的數據...使民意測驗持續5秒將耗盡電池 – Selvin

回答

0

您可以查看以下鏈接 http://developer.android.com/reference/android/app/Service.html http://developer.android.com/guide/components/services.html http://www.vogella.com/articles/AndroidServices/article.html

您可以添加一個線程將每隔5秒後下載代碼。下面是代碼

import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.util.Log; 
import android.widget.Toast; 

public class MyService extends Service { 

    String tag="TestService"; 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();  
     Log.i(tag, "Service created..."); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) {  
     super.onStart(intent, startId); 
     Log.i(tag, "Service started..."); 
     fetchData(); 
    } 

    public void fetchData() 
    { 
    new Thread(new Runnable() 
        { 

         @Override 
         public void run() 
          { 
          while(true) 
          { 
           final String strRes = downloadXML("http://uri.com"); 
           runOnUiThread(new Runnable() 
            { 

             @Override 
             public void run() 
              { 
               //do whatever once download complete 
              } 
            }); 
            try{ 
            Thread.sleep(5000); 
            }catch(Exception ee){} 
          } 
          } 
        }).start(); 
    } 
    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 
} 
+1

不要忘記在清單中輸入服務 – Sandeep

+0

如果活動崩潰會發生什麼情況,這是否會終止服務?因爲我試圖阻止這種情況發生。該服務應該保持應用程序活着,反之亦然。 感謝這段代碼和鏈接,它們非常有用。 – Deejdd

+0

不好主意...你應該使用AlarmManager來代替http://developer.android.com/reference/android/app/AlarmManager.html使用'Thread.Sleep()'是不好的代碼示例 – Selvin