Android进程与线程

进程

< activity>, < service>, < receiver>, 和 < provider>都支持android:process属性指定他们在哪个进程运行。

开启多进程

  • 一个App里面所有的组件,默认运行在以包名命名的进程中;
  • 可以在Application的process标签中配置,其他的进程名;
  • process以“:”开头进行配置,则在启动此组件时,会自动创建一个新的进程,而且此进程是这个Application私有的;
  • process标签中,没有以“:”开头,这说明此进程是全局进程,其他应用可以通过ShareUID方式共享此进程。

进程生命周期

进程的优先级一共有5级:

  1. 前台进程

    • 托管用户正在交互的 Activity(已调用 Activity 的 onResume() 方法)
    • 托管某个 Service,后者绑定到用户正在交互的 Activity
    • 托管正在“前台”运行的 Service(服务已调用 startForeground())
    • 托管正执行一个生命周期回调的 Service(onCreate()、onStart() 或onDestroy())
    • 托管正执行其 onReceive() 方法的 BroadcastReceiver
  2. 可见进程

    • 托管不在前台、但仍对用户可见的 Activity(已调用其 onPause() 方法)。例如,如果前台 Activity 启动了一个对话框,允许在其后显示上一 Activity,则有可能会发生这种情况
    • 托管绑定到可见(或前台)Activity 的 Service
  3. 服务进程

    • 正在运行已使用 startService() 方法启动的服务且不属于上述两个更高类别进程的进程
  4. 后台进程
    • 对用户不可见的 Activity 的进程(已调用 Activity 的 onStop() 方法),通常会有很多后台进程在运行,因此它们会保存在 LRU (最近最少使用)列表中
  5. 空进程
    • 不含任何活动应用组件的进程。保留这种进程的的唯一目的是用作缓存

线程

Android 提供了几种途径来从其他线程访问 UI 线程:

Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值