是否推荐使用 Android WorkManager 来处理长任务?
is it recommended to use Android WorkManager for long tasks?
我必须创建一个应用程序,在一天中的特定时间激活接近警报(这段时间可能长达数小时)。
接近警报必须自动启动,即使应用程序从未打开过。
我的问题是:在这种情况下我可以使用 WorkManager
吗?或者我应该回到 foreground service
?
WorkManager 2.3.0-alpha02 adds built-in support for long running
workers. In such cases, WorkManager can provide a signal to the OS
that the process should be kept alive if possible while this work is
executing. These Workers can run longer than 10 minutes. Example
use-cases for this new feature include bulk uploads or downloads (that
cannot be chunked), crunching on an ML model locally, or a task that's
important to the user of the app.
在后台,WorkManager 代表您管理和运行前台服务以执行 WorkRequest,同时还显示可配置的通知。
ListenableWorker 现在支持 setForegroundAsync() API,CoroutineWorker 支持暂停 setForeground() API。这些 API 允许开发人员指定此 WorkRequest 很重要(从用户的角度来看)或 long-running.
从 2.3.0-alpha03 开始,WorkManager 还允许您创建一个 PendingIntent,它可用于取消 worker,而无需使用 createCancelPendingIntent() [=22= 注册一个新的 Android 组件].当与 setForegroundAsync() 或 setForeground() APIs 一起使用时,此方法特别有用,可用于添加取消 Worker 的通知操作。
Link 到资源:https://developer.android.com/topic/libraries/architecture/workmanager/advanced/long-running
我必须创建一个应用程序,在一天中的特定时间激活接近警报(这段时间可能长达数小时)。 接近警报必须自动启动,即使应用程序从未打开过。
我的问题是:在这种情况下我可以使用 WorkManager
吗?或者我应该回到 foreground service
?
WorkManager 2.3.0-alpha02 adds built-in support for long running workers. In such cases, WorkManager can provide a signal to the OS that the process should be kept alive if possible while this work is executing. These Workers can run longer than 10 minutes. Example use-cases for this new feature include bulk uploads or downloads (that cannot be chunked), crunching on an ML model locally, or a task that's important to the user of the app.
在后台,WorkManager 代表您管理和运行前台服务以执行 WorkRequest,同时还显示可配置的通知。
ListenableWorker 现在支持 setForegroundAsync() API,CoroutineWorker 支持暂停 setForeground() API。这些 API 允许开发人员指定此 WorkRequest 很重要(从用户的角度来看)或 long-running.
从 2.3.0-alpha03 开始,WorkManager 还允许您创建一个 PendingIntent,它可用于取消 worker,而无需使用 createCancelPendingIntent() [=22= 注册一个新的 Android 组件].当与 setForegroundAsync() 或 setForeground() APIs 一起使用时,此方法特别有用,可用于添加取消 Worker 的通知操作。
Link 到资源:https://developer.android.com/topic/libraries/architecture/workmanager/advanced/long-running