我有一个应用程序在打开或启动设备时运行某些“长时间”进程。
该进程通过下载管理器执行一定数量的下载,当进程完成时,它会向应用程序发送一个广播事件,以捕获一些分析。
据我了解,每当调用引导广播事件时,都会Application
实例化该类(如果尚未在内存中)。
Application
当用户打开应用程序时,也会启动类。
基于此,运行进程的代码被放置在类onCreate
的方法中Application
。(进程从那里开始一个新线程)
但是,似乎“长”进程花费的时间超过了启动广播接收器的生存时间(大约 10 秒?),因此应用程序进程被终止。然后几秒钟后,在下载完成后,发送了第二个广播,并且应用程序再次开始再次调用Application.onCreate
,但产生了一些不良影响。
该进程预计将以单一线性方式运行,并且不会再次调用onCreate
。
由于这个过程只发生一次,我正在考虑创建一个Service
给应用程序更多的时间来保持活力。但是该过程取决于 DownloadManager 所以:
1)使用IntentService
将不起作用(据我所知),因为该过程在handleIntent
返回后仍然被杀死。该进程创建新线程,因此其任务是异步的,并且handleIntent
方法将在整个进程完成之前返回。
2)我应该创建一个Service
简单地“活着”一段时间然后在进程完成后停止的吗?
3)作为一个额外的问题,如果我有一个 running Service
,Application
类会被实例化并保存在内存中,直到服务停止?