首页 > 移动平台 > 详细

Android 中后台操作

时间:2020-06-01 10:54:29      阅读:66      评论:0      收藏:0      [点我收藏+]

UI线程处理耗时操作会导致ANR,UI线程阻塞

访问磁盘、图片解码、网络请求,,,在工作线程中做,,,单独的后台进程?

 

后台处理机制:Services,线程、线程池、WorkManager

Service和线程的区别:

线程是程序运行的最小单元,一个进程开启很多线程,,可以进行异步操作,在UI主线程开启一个工作线程,不会影响UI主线程

service是android的运行机制,无特殊处理运行在主线程上,

如果是远程的Service,会运行在独立进程的MainThread上

线程,运行独立,activity finish之后,如果没有主动的停止Thread run方法,线程会一直运行,导致内存泄漏

线程开启子线程,耗时操作不会阻塞主线程的运行

Services,播放音乐,,运行在主线程,,做耗时操作还是会导致ANR的产生,,后台操作,而非后台线程,不依赖于UI,

Activity有UI界面,如果Activity销毁或者程序关闭,Activity界面不见了,Service只要进程还在,就可以继续运行,,心跳服务、网络连接等,用Service

在service中创建一个子线程,做耗时操作,当activity被销毁之后,service还在,创建子线程还在运行,activity可以放心的销毁

activity很难对子线程进行控制,当activity销毁之后,没有办法获得之前创建的子线程的实例

 

线程池、

Services:保活、长期在系统运行、比如地图定位、音乐等,主界面不在了还在运行

WorkManager:上传日志到服务器,推迟工作的,,延时或者在预定的时间内完成,,,响应系统的某些机制(网络状态、电池状态、开关机等),

立刻完成

线程池:立刻完成

 

Android 中后台操作

原文:https://www.cnblogs.com/anny0920/p/13023756.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!