2015-12-02 87 views
0

我正在使用服務從JSON數組中獲取計數值,例如count=3
服務每20秒運行一次並返回一個新的計數值。 現在例如我們有新的計數值count=3
我想比較新計數值與以前的計數值。
例如:
第1時間服務運行:比較來自JSON的數據

count=3 

第2次服務運行:

count=5 

現在如何比較數= 5數= 3

第3次服務運行:

count=6 

現在比較count=6count =5 依此類推...
任何幫助表示讚賞。提前致謝。

下面是MyService.class

public class GettingUpdate extends Service { 
private int first=0; 
@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Toast.makeText(this,"Quack Toast",Toast.LENGTH_SHORT).show(); 
    new ServAsynch().execute(); 
    return super.onStartCommand(intent, flags, startId); 
} 

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

private class ServAsynch extends AsyncTask { 


    @Override 
    protected Object doInBackground(Object[] objects) { 
     String urlQuack="Someurl"; 

     try { 
      System.out.println("test"); 
      URL url = new URL(Someurl); 
      URLConnection connection = url.openConnection(); 
      InputStream inputStream = connection.getInputStream(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 
      StringBuilder result = new StringBuilder(); 
      String line; 
      while((line = reader.readLine()) != null){ 

       result.append(line); 

      } 
      System.out.println("testRes"); 
      System.out.println("RESULT:" + result); 
      JSONObject jsonObject = new JSONObject(String.valueOf(result)); 
      JSONObject jo = jsonObject.optJSONObject("metadata"); 
      String count = jo.optString("count"); 
      System.out.println("Count: "+count); 
      first =Integer.parseInt(count); 
      } catch (Exception e) { 
      System.out.println(e); 
     } 
     return null; 
    } 


    @Override 
    protected void onPostExecute(Object o) { 
     super.onPostExecute(o); 


    } 
}enter code here 
+0

當你比較它們時,你想要做什麼? –

+0

然後我會顯示本地通知 – user2523529

+0

您是否想將您之前的值與新值進行比較? 如果是,您可以使用Shared Preference存儲以前的值。 – Shivang

回答

1

如果你想比較之前的計數值新的計數值,只是不停地,你的方法之外。

使其保持靜態。

在類中聲明:

static int last=-1; 

INT你的方法:

先申報(未聲明)

int first =Integer.parseInt(count); 

,然後比較

  if (first==last) 
       { 
       // so domething 
       } 
      else 
       { 
       // do another thing 
       } 

finaly,先保留

  last=first; 

如果你想保留的所有值,使用矢量例如:

static vector<Integer> counts=new vector<Integer>; 

它可以幫助?

+0

Thnx它對我來說相當有用,你可以解釋你的邏輯一點..這將是偉大的幫助.. – user2523529

+0

什麼解釋:如何保持價值,或矢量? –

+0

如何保持頂部修改值 – user2523529