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

    立刻完成

    线程池:立刻完成

  • 相关阅读:
    CF353D Queue(结论)
    CF1147C Thanos Nim(博弈论、结论推导)
    牛客:CBX and children(平衡树+二分+贪心)
    牛客:Gambling Monster(权值线段树+离散化+离线)
    剑指49.把字符串转换成整数
    剑指48.不用加减乘除做加法
    剑指47.求1+2+3+...+n
    剑指46.孩子们的游戏(圆圈中最后剩下的数字)
    剑指45.扑克牌顺子
    剑指44.翻转单词顺序
  • 原文地址:https://www.cnblogs.com/anny0920/p/13023756.html
Copyright © 2020-2023  润新知