本文主要是介绍Android后台任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简介
每个 Android 应用都有一个主线程,负责处理界面(包括测量和绘制视图)、协调用户互动以及接收生命周期事件。如果有太多工作在主线程中进行,则应用可能会挂起或运行速度变慢,从而导致用户体验不佳。任何长时间运行的计算和操作(例如解码位图、访问磁盘或执行网络请求)都应在单独的后台线程上完成。一般来说,任何所需时间超过几毫秒的任务都应该分派到后台线程。在用户与应用积极互动时,可能需要执行几项这样的任务。
后台处理的挑战
后台任务会使用设备的有限资源,例如 RAM 和电池电量。如果处理不当,可能会导致用户体验不佳。
为了最大限度地延长电池续航时间并强制推行良好的应用行为,Android 会在应用(或前台服务通知)对用户不可见时,限制后台工作。
- Android 6.0(API 23)引入了低电耗模式和应用待机模式。
- Android 7.0(API 24)限制了隐式广播,并引入了随时随地使用低电耗模式。
- Android 8.0(API 26)进一步限制了后台行为,例如在后台获取位置信息和释放缓存的唤醒锁定。
- Android 9(API 28)引入了应用待机存储分区,通过它,系统会根据应用使用模式动态确定应用资源请求的优先级。
WorkManager
WorkManager 提供向后兼容的 API(兼容 API 级别 14 及更高级别),利用 JobScheduler API(API 级别 23 及更高级别)帮助优化更低级别设备上的电池续航时间、批量作业以及 AlarmManager 和 BroadcastReceiver 的组合。
AlarmManager
如果您需要在确切的时间运行某项作业,请使用 AlarmManager。
DownloadManager
如果您的应用执行长时间运行的 HTTP 下载,请考虑使用 DownloadManager。客户端可能会请求将 URI 下载到位于应用进程之外的特定目标文件中。内容下载管理器会在后台执行下载操作,它负责处理 HTTP 互动,在下载失败或连接发生更改以及系统重新启动后重新尝试下载。
线程处理
- 基础类:Thread、Runnable
- Android类:HandlerThread、AsyncTask 和 IntentService
- 线程池:ThreadPoolExecutor
- Handler
Service
Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。
这篇关于Android后台任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!