双进程保活思路学习总结

本文探讨了Android进程间通讯(IPC)的原理,特别是AIDL的使用,以及如何通过双进程保活策略使应用在后台保持活跃,类似于QQ和微信。详细介绍了Android进程的生命周期、内存管理机制LowMemoryKiller,以及针对系统、手动清理和Rom/第三方软件清理的保活解决方案,如Service之间的相互启动唤醒和使用JobService + JobScheduler进行系统级监控。
摘要由CSDN通过智能技术生成

鸣谢:
http://www.jianshu.com/p/810ecb80a96f
http://www.jianshu.com/p/28c5377c77c4
Demo地址:
https://github.com/jigongdajiang/FunDemo/tree/master

IPC

简写:Inter Progress Communication 进程间通讯/跨进程通讯 > Why?: Android 为了保证进程间互补影响,进行了进程隔离,保证每个进程都有一个独立的虚拟空间,但是进程间有时候又不可能没有交流,于是就有了IPC机制
What?: AIDL文件其实就是一种协议文件,一般规定了服务端具备的功能接口
服务端Service中返回IBinder对象为 AIDL文件生成Java文件后的内部类Sub
客户端bindService,在ServiceConnection中的连接成功方法中会返回一个IBinder对象,通过AIDL对应的java类的asInterface方法可以将IBinder转为AIDL对应的java类,通过这个类既可以调用服务端中提供的功能

源码:AIDL对应的Java文件架构

//其本身是个接口,里面有定义的功能方法 和一个 Sub内部抽象类
            public interface UserAidl extends android.os.IInterface {
   
                /**
                 * 内部类继承Binder 且实现了UserAidl   而Binder 实现了IBinder Binder中有一些Native方法 
                 */
                public static abstract class Stub extends android.os.Binder implements gjg.com.fundemo.UserAidl {
   
                    //AIDL的唯一标示,用来供底层区分
                    private static final java.lang.String DESCRIPTOR = "gjg.com.fundemo.UserAidl";

                    /**
                     * stub与接口关联
                     */
                    public Stub() {
                        this.attachInterface(this, DESCRIPTOR);
                    }

                    /**
                     * 这就是客户端连接成功后使用的方法,最终用来返回一个Proxy
                     */
                    public static gjg.com.fundemo.UserAidl asInterface(android.os.IBinder obj) {
                        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值