2015-12-02 113 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