2012-10-05 17 views
0

我需要我的Android應用程序,以檢查服務器每隔X時間,看看財產以後新加入

檢查服務器每隔X時間,看看是否被添加新的東西 - 和 然後使用添加新的數據。

我該怎麼做>>?

你應該使用什麼樣的服務器? (數據只是一個「字符串」格式)

樣本會有幫助!

thx提前湯姆。

+0

alarmmanager + HTTP標頭(lastmodification如果-,因爲修改) – njzk2

+1

我會建議使用服務。 http://developer.android.com/guide/components/services.html – Shark

回答

0

就我個人而言,我不認爲它會有效。考慮你有更多的用戶,它會像瘋了一樣查詢你的服務器。

如果數據只是字符串,把它放在HTML網頁甚至txt文件中都可以。每當你想查詢,閱讀該HTML頁面或下載該文本文件。

在任何類型的操作系統上,Apache都非常好。我建議你從那裏開始。無論如何,我建議你重新考慮你的方法,如果X是一個非常小的數字,如每5秒鐘一次。如果它像一兩天,你會沒事的。

+0

thx回答 - 我的應用程序只使用2智能手機,所以我不認爲這應該是一個問題 - 但我該怎麼做 - 如何我檢查服務器(html網頁)evrey X時間? thx提前,湯姆。 – user1581901

+0

@ user1581901 X有多大?幾秒鐘,幾分鐘還是幾天?如果是幾秒鐘,我會說你是正確的一個班級來做到這一點。如果分鐘或更長時間,使用AlarmManager(http://developer.android.com/reference/android/app/AlarmManager.html) –

+0

X大約2-4分鐘 - 所以你建議我使用AlarmManger? – user1581901

0

如果您有自己的服務器,只需使用GCM並向手機發送消息,告訴它有新的東西。那麼它可以去得到它。這將使用更少的電池和數據流量。

+0

他說他只有兩部手機需要這些數據。在我看來,使用推送消息只會增加複雜性。 –

+0

我沒有說過它更簡單,我說它更有效率。我討厭那些耗盡我電池電量的應用程序,所以使用GCM停止這個值得(輕微)增加複雜性 - 至少對我來說是這樣的。 – toadzky

+0

真的。但無論如何,我真的認爲這取決於他真的拒絕告訴我們的時間間隔。 –

0

我同意肖恩許,最好是使用谷歌推送服務(GCM)(http://developer.android.com/guide/google/gcm/index.html)。如果這是一個矯枉過正只是做一個http請求:

private void loadData(String url){ 
    String result = ""; 

    try { 
     URL url = new URL(url); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

     conn.setDoOutput(true); 

     OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
     wr.write(data); 
     wr.flush(); 

      BufferedReader inStream = new BufferedReader(new InputStreamReader((conn.getInputStream()))); 

      String str = ""; 
      if((str = inStream.readLine()) != null){ 
        result = str; 
      } 


      inStream.close(); 
    } catch (MalformedURLException e) { 
      e.printStackTrace(); 
    } catch (IOException e) { 
      result = ""; 
    } 

    return result; 
} 

因爲這個任務需要長時間excecute,你應該把它放在一個線程。這樣稱呼它:

new Thread(){ 
    public void run() { 
    loadData("your url"); // save the result in some instance variable 
    } 
}.start();