如何在安卓中无限期运行服务



我正在开发一个应用程序,其中我必须每 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 服务,以检查新数据是否已更新,即使应用程序被用户关闭。

运行无限期服务并不是理想的解决方案。阅读此内容。

为此,请使用后台调度程序,因为它还可以有效使用电池。

相关内容

  • 没有找到相关文章

最新更新