我的应用程序有一个创建3个同步线程的线程池。当我调用runnables时,它们会被添加到我的线程池中。
当应用程序进入后台一段时间后,我的问题就出现了。最终,我的线程停止在我的池中执行runnables,并且池继续增长。即使我将我的应用程序带回前台,我的线程也不会再次开始运行。
我的理论是,当我的应用程序进入我的线程被杀死的背景时。我不确定是什么,我也不确定一个好的方法来确定我的线程是否被杀死以便我可以再次启动它们。
对于我可以查找以确定线程是否已被杀死的内容,您有什么建议吗?
答案 0 :(得分:1)
您不能使用线程池在后台执行代码,因为Android活动生命周期不会将您的应用视为活动,并且在您失去UI焦点后最终会终止您的进程(包括所有线程)。你想要的是Android Service,它有不同的生命周期。要做这样的事情,我们使用带有Handler和HandlerThread的本地服务,我们可以将Runnables发布到。你可能想要类似的东西。
注意:每次我这样做,我觉得必须有一个更简单的方法,所以如果有人简化了这种模式,可能值得搜索。