为什么一旦Intent服务启动就会调用onDestroy()?

时间:2017-06-12 03:59:12

标签: android android-service retrofit2 intentservice rx-android

我知道一旦Intent服务工作完成就会结束。 我正在onHandleIntent()上进行网络调用。服务一旦启动就会消失,但网络调用成功完成。

  

是因为所有网络调用方法都被调用了吗?   存在于不同的线程中?那么,服务就死了?

@Override
protected void onHandleIntent(@Nullable Intent intent) {
    Log.i(TAG, "Download Service Started!");
    initVariables();
    startDownloadService(intent);
}

private void startDownloadService(Intent intent) {
    receiver = intent.getParcelableExtra("receiver");
    notifyDownloadRunning("Trying to start Download");

    getNews();
    getVideoDetails();
    .................
}

Retorfit界面

@GET()
Observable<VideoDetailsRoot> getVideoDetails(@Url String url);

1 个答案:

答案 0 :(得分:2)

您正在处理两次线程。一次使用IntentService,一次使用Retrofit和Rx。

订阅Observable时,您不会阻止当前线程(大部分时间),而是异步等待结果。

在您的情况下,您可以良心地跳过IntentService的实施。 Retrofit和Rx为您提供了足够的功能来异步处理下载而不会阻塞主线程。

如果要保留服务,则需要使网络部分同步或等待订阅完成。但任何这些都可能是对Retrofit本身的错误使用。