本文最后更新于:1 个月前
每个 Android 应用都有一个主线程,负责处理界面(包括测量和绘制视图)、协调用户互动以及接收生命周期事件。如果有太多工作在主线程中进行,则应用可能会挂起或运行速度变慢。任何长时间运行的计算和操作(例如解码位图、访问磁盘或执行网络请求)都应在单独的后台线程上完成。
为工作选择合适的解决方案
- 工作可以延迟,还是需要立即执行?
- 工作是否依赖系统条件?
- 作业是否需要在确切的时间运行?
WorkManager
对于可延迟的工作以及预计即使设备或应用重启也会运行的工作,可以使用 WorkManager
。WorkManager 是一个 Android 库,可在满足工作的条件(例如网络可用性和电源)时妥善运行可延迟的后台工作。
前台任务
对于需要立即运行并且必须执行完毕的由用户发起的工作,可以使用前台服务。使用前台服务可告知系统应用正在执行重要任务,不应被终止。前台服务通过通知栏中的不可关闭通知向用户显示。
AlarmManager
如果需要在确切的时间运行某项工作,可以使用 AlarmManager
。AlarmManager
会在指定的时间启动应用(如有必要),以便运行该作业。如果作业不需要在确切的时间运行,WorkManager
是更好的选择。
DownloadManager
如果应用执行长时间的 HTTP 下载,可以使用 DownloadManager。内容下载管理器会在后台执行下载操作,它负责处理 HTTP 互动,在下载失败或连接发生更改以及系统重新启动后重新尝试下载。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!