Robospice 服务 运行 直到它在应用程序完成后完成它的工作

Robospice service running until it finish it job after application finished

我有一个可以访问服务器的应用程序。当我退出应用程序时,我必须先断开与服务器的连接,然后再关闭应用程序。

我想知道是否有可能(以及如何)制作一个 Robospice 服务(后台任务),即使应用程序已关闭(并且 Robospice 服务仍在 运行 完成时也与服务器断开连接断开连接,然后自动杀死自己)。

问题是断线时间太长(有时超过5秒),我想避免在断线期间阻塞phone,并允许用户使用它的phone .

另一个问题:Robospice 库是否会在未来得到维护和改进(如果需要)?

是的,RoboSpice 在附加到服务上下文时与在 Activity 中一样工作。 但是您可能应该尝试在实现的 com.octo.android.robospice.SpiceService#onDestroy 方法中执行断开连接。只要没有有意义的工作要做,该服务就会停止,所以我想这是最适合您的用例的解决方案。

我已经通过 finish()

结束我的申请,解决了我的问题(这可能不是真正的问题!)

在我的 MainActivity 中,我使用了 Robospice 服务:

private final class LogoutListener implements PendingRequestListener<String> {

    @Override
    public void onRequestFailure(SpiceException spiceException) {
        Log.e(TAG, spiceException.getMessage());            
    }

    @Override
    public void onRequestSuccess(String result) {
        // nothing special
    }

    @Override
    public void onRequestNotFound() {
        Log.w(TAG, "Not found");
    }
}

private void Alarm_Logout(boolean exit) {
    Logout request = new Logout(url);
    spiceManager.execute(request, new LogoutListener());
    this.finish();
}

还有 Lougout class :

public class Logout extends OkHttpSpiceRequest<String> {

  private String url_logout;

  public Logout(String url) {
      super(String.class);
      this.url_logout = url;
  }

  @Override
  public String loadDataFromNetwork() throws Exception {

      OkHttpClient client = new OkHttpClient();
      Request request = new Request.Builder()
              .url(url_logout)
              .build();
      Response response = client.newCall(request).execute();
      return "ok";

  }

}

在我使用 System.exit(0)onRequestSuccess 中关闭应用程序之前,我不得不等待注销完成.现在应用程序关闭(finish()),但注销在后台继续,然后,完成后,服务完成...