2016-01-26 36 views
-2

我正在開發一個應用程序,通常(例如,每5分鐘一次)使用HTTP請求向服務器請求配置的更新版本。如何實現從服務器獲取更新的過程?

實施它的最佳方法是什麼?

Service適合這種情況嗎?或者可能只是一個循環的線程就足夠了?

+0

簡答:_是的。使用服務。稍寬的解釋:使用服務將確保您的應用程序將在後臺獲取更新。使用線程將需要您的應用程序在前臺運行。在後臺運行服務是**不會**與使用'AsyncTask'運行任務混淆 –

回答

1

Service在UI /主線程上運行,而Intent Service在後臺線程上運行,它還有另一個優點,就是Intent服務在完成任務後關閉自身。

服務

A服務是可以在後臺執行長時間運行的操作,並且不提供用戶界面

意圖服務應用程序組件

IntentService是服務的基類,用於按需處理異步請求(表示爲Intents)。客戶通過startService(Intent)調用發送請求 ;如需要該服務已啓動, 處理每個意向依次使用工作線程,停止本身 當它運行工作

的。

只需創建一個類,它可以擴展IntentServiceonHandleIntent()方法獲取您的配置文件。

我不知道如何通過HTTP獲取配置文件,目的是爲Android提供一個名爲Volley的框架。它提供了傳統的HTTPRequest類

良好的HTTP處理一個簡單的HTTP請求看起來像這樣

final TextView mTextView = (TextView) findViewById(R.id.text); 
... 

// Instantiate the RequestQueue. 
RequestQueue queue = Volley.newRequestQueue(this); 
String url ="http://www.google.com"; 

// Request a string response from the provided URL. 
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
      new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     // Display the first 500 characters of the response string. 
     mTextView.setText("Response is: "+ response.substring(0,500)); 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     mTextView.setText("That didn't work!"); 
    } 
}); 
// Add the request to the RequestQueue. 
queue.add(stringRequest); 

瞭解更多關於fetching data here

相關問題