当应用程序被终止时,服务停止

时间:2017-06-19 13:36:55

标签: android web-services service android-service

我创建了一个调用API并获得响应的服务。根据响应我们更新状态。当应用程序位于前台时,该服务运行良好,但是当应用程序被终止时,时间服务将停止,并且不会获得API响应。

我想要的是什么:

当服务启动并且API被调用但应用程序在响应到来之前被用户杀死时,服务应继续执行而不重新启动而不会停止。 请检查以下代码。

   public class Send_Service extends Service {
   @Override
   public int onStartCommand(Intent intent, int flags, int startId) {

       StringRequest request = new StringRequest(Request.Method.POST, url, new 
         Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                   // my code
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }) {
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> param = new HashMap<String, String>();
                    param.putAll(params);
                    return param;
                }
            };
            request.setShouldCache(false);
            // Adding request to request queue
            request.setRetryPolicy(new DefaultRetryPolicy(
                    60000,
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
            RequestQueue mRequestQueue = Volley.newRequestQueue(this);
            mRequestQueue.add(request);

        }


    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (OutOfMemoryError e) {
    }
}
  return Service.START_NOT_STICKY;}

清单

 <service android:name=".services.Sendfax_Service"
        android:enabled="false"
        />
<!--calling service-->
 Intent i = new Intent(this, Sendfax_Service.class);
 startService(i);

2 个答案:

答案 0 :(得分:1)

你应该选择

  

START_STICKY从onStartCommand(Intent,int,int)返回的常量:   如果此服务的进程在启动时被终止(之后)   从onStartCommand(Intent,int,int)返回,然后将其留在   开始状态,但不保留这个意图。

而不是

  

START_NOT_STICKY从onStartCommand返回的常量(Intent,int,   int):如果此服务的进程在启动时被终止(之后)   从onStartCommand(Intent,int,int)返回,并没有新的   开始意图传递给它,然后从服务中取出服务   开始状态并且不会重新创建,直到将来显式调用   Context.startService(意向)。

如果您希望它在该进程被终止时运行

答案 1 :(得分:0)