我知道意图服务在工作完成后立即结束。我正在 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();
.................
}
改装接口
@GET()
Observable<VideoDetailsRoot> getVideoDetails(@Url String url);
您正在处理线程两次。一次使用IntentService
,一次使用Retrofit和Rx。
订阅 Observable
时,您不会阻止当前线程(大多数情况下(,而是异步等待结果。
在您的情况下,您可以凭良心跳过IntentService
的实施。Retrofit 和 Rx 为您提供了足够的功能来处理异步下载,而不会阻塞主线程。
如果要保留服务,则需要使网络部分同步或等待订阅完成。但其中任何一个都可能是对Retrofit本身的误用。