Android安卓进程保活(三)双进程拉活(Java层),2024年Android开发进阶课程

本文详细介绍了Android进程保活中的双进程拉活机制,通过Java层实现互相启动,确保进程存活。讲解了服务进程、后台进程、空进程的优先级,以及Android进程保活的多种方法,如设置前台Service、JobScheduler等。并提供了一种具体的双进程拉活实现方案,涉及Service的绑定和启动机制。
摘要由CSDN通过智能技术生成

可见进程被视为是极其重要的进程,除非为了维持所有前台进程同时运行而必须终止,否则系统不会终止这些进程。

服务进程 (Service process):

正在运行已使用 startService() 方法启动的服务且不属于上述两个更高类别进程的进程。尽管服务进程与用户所见内容没有直接关联,但是它们通常在执行一些用户关心的操作(例如,在后台播放音乐或从网络下载数据)。因此,除非内存不足以维持所有前台进程和可见进程同时运行,否则系统会让服务进程保持运行状态。

后台进程 (Service process):

包含目前对用户不可见的 Activity 的进程(已调用 Activity 的 onStop() 方法)。这些进程对用户体验没有直接影响,系统可能随时终止它们,以回收内存供前台进程、可见进程或服务进程使用。 通常会有很多后台进程在运行,因此它们会保存在 LRU (最近最少使用)列表中,以确保包含用户最近查看的 Activity 的进程最后一个被终止。如果某个 Activity 正确实现了生命周期方法,并保存了其当前状态,则终止其进程不会对用户体验产生明显影响,因为当用户导航回该 Activity 时,Activity 会恢复其所有可见状态。

空进程 (Empty process):

不含任何活动应用组件的进程。保留这种进程的的唯一目的是用作缓存,以缩短下次在其中运行组件所需的启动时间。 为使总体系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往会终止这些进程。

进程优先级:

首先空进程是最先被回收的,其次便是后台进程,依次往上,前台进程是最后才会被结束。

Android进程保活


有很多种方法可以实现Android的进程保活,比如通过  1像素且透明Activity提升App进程优先级、 通过设置前台Service提升App进程优先级、 Java层的双进程拉活、 JobScheduler实现、 NDK双进程守护、 使用账户同步拉活、 workmanager实现。

下面这幅图,说明的是:

  • 红色部分是容易被回收的进程,属于android进程

  • 绿色部分是较难被回收的进程,属于android进程

  • 其他部分则不是android进程,也不会被系统回收,一般是ROM自带的app和服务才能拥有

在asdf这里插入图片描述

本篇文章介绍的是进程第三种方式:

  • 双进程拉活(Java层)
双进程拉活(Java层):

当一个进程结束后,立刻调用启动另一个进程,这样实现互相调用,互相启动( 只有在一个进程结束时候才会启动另一个进程)

首先创建LocalService.java继承自Service(android.app.Service):↓

public class LocalService extends Service {

@Override

public IBinder onBind(Intent intent) { <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值