为什么在 Intent Service 启动后立即调用 onDestroy()?

Why is onDestroy() being called as soon as Intent Service Starts?

我知道 Intent Service 在其工作完成后立即结束。 我在 onHandleIntent() 上进行网络调用。服务 一启动就死掉 但网络调用成功完成。

Is it because all the methods for network calls are called and they exist in a different thread? So, the service dies?

@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();
    .................
}

改装界面

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

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

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

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

如果你想保持服务,你需要让网络部分同步或等待订阅完成。但这些都可能是对 Retrofit 本身的误用。