我知道一旦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);
答案 0 :(得分:2)
您正在处理两次线程。一次使用IntentService
,一次使用Retrofit和Rx。
订阅Observable
时,您不会阻止当前线程(大部分时间),而是异步等待结果。
在您的情况下,您可以良心地跳过IntentService
的实施。 Retrofit和Rx为您提供了足够的功能来异步处理下载而不会阻塞主线程。
如果要保留服务,则需要使网络部分同步或等待订阅完成。但任何这些都可能是对Retrofit本身的错误使用。