[英]Are scheduled threads runnable after app termination on Android?
在我们的Android 应用程序中 - 在应用程序启动期间,我们安排线程每 8 小时运行一次以传输文件。 当应用程序在应用程序启动后终止(即用户终止应用程序)时,我一直观察到不一致的传输行为。 我怀疑计划的线程以某种方式被取消/销毁/终止,应用程序被终止。 有谁知道 Android 是否是这种情况?
我如何部署计划的后台线程的示例代码。
scheduledExecutor = new ScheduledThreadPoolExecutor(1, <this param is a class that Creates threads with the default priority set to background.>);
scheduledExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
scheduledExecutor.schedule(new Handler(), 28800000, TimeUnit.MILLISECONDS);
在应用程序启动期间,我们安排线程每 8 小时运行一次以传输文件
这不会很好地工作。
当应用程序在应用程序启动后终止时,我一直观察到不一致的传输行为(即用户杀死应用程序)
如果应用程序也在后台,您将有不一致的传输行为。 您所描述的唯一可行的场景是某种信息亭模式应用程序或您的应用程序 UI 始终处于前台的其他情况。
我怀疑计划的线程以某种方式被取消/销毁/终止,应用程序被终止
Android 将在一段时间后终止您的应用程序的进程,为其他应用程序释放系统 RAM。 那时,您的线程和其他 CPU/RAM 结构都远离 go。 这在文档以及 Android 应用程序开发方面的许多书籍和课程中都有介绍。
而且,出于传输文件的目的,您的应用程序使用 Internet 的能力将受到打盹模式、应用程序待机和制造商特定的电池节省方法的影响。 打盹模式包含在文档中。
今天的标准建议是使用WorkManager
,您可以在其中安排工作,并在执行工作时根据需要访问网络的说明来安排工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.