标题不好,所以请阅读此说明以了解我的意思。
我创建了一个我想运行很长时间的后台服务,根据定义,即使用户切换应用程序甚至关闭应用程序,Android上的服务也可以运行。
我的问题是:当应用程序进入后台并且唯一正在运行的是服务时,Android管理系统如何知道要保留哪些线程以及擦除哪些线程?
默认情况下,我的服务在主线程上运行,因此当我想执行长任务时,我会这样做:
AsyncTask.THREAD_POOL_EXECUTOR.execute(runnable);
是吗?我可以使用android创建的默认线程池吗?或者服务必须显式创建线程,以便系统知道即使应用程序进入后台线程也必须存在?
答案 0 :(得分:2)
当应用程序进入后台并且唯一正在运行的是服务时,android管理系统如何知道要保留哪些线程以及擦除哪些线程?
Android不会“擦除”任何线程。 Android终止进程以释放系统RAM,而不是线程。
是吗?
与使用Executor
中的执行程序相比,我建议使用您自己的AsyncTask
,RxJava或Kotlin协程。这是因为我希望AsyncTask
在某个时候会被弃用,因为它是“老派”。
但是,除此之外,您所做的事情听起来还不错。