Android 中后台操作

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

立刻完成

线程池:立刻完成

 

posted @ 2020-06-01 10:21  Anny0920  阅读(204)  评论(0编辑  收藏  举报