如何让我们的Android应用进程保活?

一、线程 进程 应用

  1. 默认下,同一个应用的所有组件都运行在同一个进程中。当然也可以在manifest清单文件中设置组件运行的进程。

    组件元素 activityservicereceiverprovider,都有一个process属性可以指定组件运行在哪个进程中。这个属性可以设置为每个组件运行在自己的进程中,或者设置进程同名与其他一些组件共享一个进程。

  2. Android会在某些时刻决定关闭一个进程,比如内存剩余较小并且其他进程更迫切需要内存时,某些进程会被关闭时,且进程中的组件们都被销毁.如果重新需要这些组件工作时,进程又会被创建出来。

  3. 系统不会为每个组件的实例分别创建线程。所有运行于一个进程的组件都在主线程(UI线程)中被实例化,并且系统对每个组件的调用都在这个线程中派发,且只能在UI线程中管理的你的界面。

  4. 可以 线程 进程 应用 打个比方:

    线程(Thread):流水线 、 进程(process): 车间 、 应用:工厂

  5. 为什么使用多线程?

    线程如同一条流水线,当我们执行一些比如网络连接或数据库请求这样的耗时操作,会造成该线程阻塞。而我们又需要在主线程(UI线程)中对整个界面进行响应。所以为了不阻塞UI线程,提高应用程序的性能,需要使用多线程来操作。

  6. 为什么使用多进程?

    在Android系统中,每个进程都有一个内存限制。如果一个应用可以多有个进程,那么这个应用可以有更多的内存来运行,使我们的应用内存限制变大,优化程序的速度。

二、进程的等级(进程的生命周期)

一. 进程按照优先级分为不同的等级:
  1. 前台进程(Foreground process):

    A. 拥有用户正在交互的 Activity( onResume()状态)
    
    B. 正在与bound绑定服务交互的 Activity
    
    C. 正在“前台”运行的 Service(startForeground()被调用)
    
    D. 生命周期函数正在被执行的 Service(onCreate()、onStart() 或 onDestroy())
    
    E. 正执行 onReceive() 方法的 BroadcastReceiver    
    
    (该进程优先级别最高,杀死前台进程需要用户的响应。)
    
  2. 可见进程(Visible process):

    该进程并不是在最前端,并没有得到焦点,但是我们却能看到它们。

    A. 拥有不在前台、但仍对用户可见的 Activity(例如弹出一个对话框的Activity)
    
    B. 绑定到可见进程(或前台进程)中的Activity 的 Service
    
  3. 服务进程(Service process):

    A. 正在运行的通过 startService() 启动的,且不属于上述两个更高进程状态的Service
    
  4. 后台进程(Background process):

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值