我正在使用服务从JSON数组中获取计数值,例如count=3
服务每20秒运行一次并返回一个新的计数值。
现在我们有了新的计数值count=3
我想将新计数值与之前的计数值进行比较
例如:
第一次服务运行:
count=3
第二次服务运行:
count=5
现在如何将count = 5与count = 3进行比较。
第三次服务运行:
count=6
现在将count=6
与count =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 :(得分:1)
如果您想将新计数值与之前的计数值进行比较,只需将其保留在方法之外。
将其保留为静态以保留它。
在你班上,声明:
static int last=-1;
你的方法:
首先声明(未声明)
int first =Integer.parseInt(count);
然后比较
if (first==last)
{
// so domething
}
else
{
// do another thing
}
最后,先保持
last=first;
如果要保留所有值,请使用Vector,例如:
static vector<Integer> counts=new vector<Integer>;
等
有帮助吗?