操作系统如何确定要挂起的线程?

时间:2019-07-13 15:51:30

标签: android android-service background-service

标题不好,所以请阅读此说明以了解我的意思。

我创建了一个我想运行很长时间的后台服务,根据定义,即使用户切换应用程序甚至关闭应用程序,Android上的服务也可以运行。

我的问题是:当应用程序进入后台并且唯一正在运行的是服务时,Android管理系统如何知道要保留哪些线程以及擦除哪些线程?

默认情况下,我的服务在主线程上运行,因此当我想执行长任务时,我会这样做: AsyncTask.THREAD_POOL_EXECUTOR.execute(runnable);

是吗?我可以使用android创建的默认线程池吗?或者服务必须显式创建线程,以便系统知道即使应用程序进入后台线程也必须存在?

1 个答案:

答案 0 :(得分:2)

  

当应用程序进入后台并且唯一正在运行的是服务时,android管理系统如何知道要保留哪些线程以及擦除哪些线程?

Android不会“擦除”任何线程。 Android终止进程以释放系统RAM,而不是线程。

  

是吗?

与使用Executor中的执行程序相比,我建议使用您自己的AsyncTask,RxJava或Kotlin协程。这是因为我希望AsyncTask在某个时候会被弃用,因为它是“老派”。

但是,除此之外,您所做的事情听起来还不错。