gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 08:26:30 24 4
gpt4 key购买 nike

我知道 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();
.................
}

retrofit 界面

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

最佳答案

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

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

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

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

关于android - 为什么在 Intent Service 启动后立即调用 onDestroy()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44491212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com