我正在开发一个应用程序,其中我必须每 5 分钟点击一次 RESTful Web 服务,以检查新数据是否已更新,即使应用程序被用户关闭。我做到了
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
RequestQueue requestQueue = Volley.newRequestQueue(this);
String url = "http://www.abcert.com/wp-json/wp/v2/posts";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
boolean Str;
try {
JSONArray jsonArray =new JSONArray(response);
Log.i("JSON",""+jsonArray);
JSONObject jsonObject = jsonArray.getJSONObject(0);
int id = jsonObject.getInt("id");
Log.i("MyService is on the",""+id);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("Hey","Something went wrong");
}
});
//add request to queue
requestQueue.add(stringRequest);
return START_STICKY;
}
但没有成功。当我关闭应用服务时,START_STICKY不起作用,也会被杀死。
许多应用程序使用连接到其数据库的Service
,用于其特定任务并在后台运行。
就像Facebook运行MessagingService
一样,Instagram运行NotificationService
。如果需要,可以同时使用handler
也可以选择Scheduler
。
使用Handler
的示例:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
String url = "http://www.abcert.com/wp-json/wp/v2/posts";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
boolean Str;
try {
JSONArray jsonArray =new JSONArray(response);
Log.i("JSON",""+jsonArray);
JSONObject jsonObject = jsonArray.getJSONObject(0);
int id = jsonObject.getInt("id");
Log.i("MyService is on the",""+id);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("Hey","Something went wrong");
}
});
//add request to queue
requestQueue.add(stringRequest);
handler.postDelayed(this, 1000 * 60 * 5); //Code runs every 5 minutes
}
}, 0); //Initial interval of 0 sec
return START_STICKY;
}
我正在开发一个应用程序,其中我必须每 5 分钟点击一次 RESTful Web 服务,以检查新数据是否已更新,即使应用程序被用户关闭。
运行无限期服务并不是理想的解决方案。阅读此内容。
为此,请使用后台调度程序,因为它还可以有效使用电池。