Android 保活措施

Android系统会尽可能的保持应用进程,但是当需要建立新的进程或者运行更重要的进程,便会回收优先级低一些的进程,这个就是lowmemorykiller的工作。而进程的优先级其实就是 /proc/pid/oom_adj

进程的优先级排序

  1. 前台进程(Foreground Process)
  2. 可见进程(Visible Process)
  3. 服务进程(Service Process)
  4. 后台进程(Background Process)
  5. 空进程(Empty Process)

前台进程

  1. 拥有 用户正在交互的 Activity(正处于 onResume中)
  2. 拥有 Service绑定到正处于 onResume的 Activity
  3. 拥有 Service 调用 startForeground 成为前台服务
  4. 拥有 Service 正在执行生命周期回调(onCreate、onStart、onDestroy)
  5. 拥有 BroadcastReceiver 正在执行 onReceive

可见进程

  1. 拥有 Activity 处于 onPause ,此时可见但是不可操作
  2. 拥有 Service 绑定到正处于 onPause的 Activity

服务进程

  1. 仅通过 startService 启动的 Service

后台进程

  1. 拥有 Activity 处于 onStop

空进程

  1. 不拥有任何活动的组件进程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用的保活是指保持应用程序在后台持续运行,即使用户切换到其他应用或关闭手机屏幕,也能接收通知、执行定时任务等。在Android中,保活通常是为了实现诸如消息推送接收、位置服务、后台数据同步等功能。 1. **Service和BroadcastReceiver**: - Service:可以通过startService()方法启动长周期的服务,在后台执行耗时操作。但是,系统可能会在空闲时杀死无可见界面的服务,所以需要设置合适的IntentFilter和配置文件(如`<service>`标签)以维持服务。 - BroadcastReceiver:注册一个广播监听器,当特定事件发生时(如定时广播),应用会被唤醒并处理。 2. **JobScheduler**: Android 6.0 (API 23)及以上引入了JobScheduler API,这是一种更官方的方式来安排定期工作,比如数据同步,其优势在于系统会控制资源分配,避免过度消耗电池。 3. **WakeLock**: 使用PowerManager.WakeLock可以防止设备进入休眠状态,但需要谨慎使用,因为它会增加电量消耗。 4. **前台服务和前台任务**: 当应用处于前台模式时,创建前台服务或前台任务可以保证其不会被系统轻易杀死。然而,长时间的前台活动可能导致用户体验变差。 5. **后台运行权限**: 在AndroidManifest.xml中声明<uses-permission> android:name="android.permission.BIND_JOB_SERVICE" 或者 <uses-permission> android:name="android.permission.FOREGROUND_SERVICE",允许应用请求特定的后台权限。 请注意,虽然以上方法可以让应用尽可能地保活,但根据Google Play的规定,过度消耗系统资源的行为可能会导致应用被下架,因此应合理设计策略并考虑用户的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值