android守护进程,Android-守护进程导致Application多次初始化

因为要提升应用在手机上面的保活率,所以我在项目当中编写了守护进程。但是我们编写之后遇到了Application被多次初始化的情况,下面分享一下我的解决方案。

获取当前进程

怎么获取当前进程呢?直接给小伙伴们上代码吧!

/**

* 获取当前进程名称

* @param context

* @param pid

* @return

*/

public String getProcessName(Context context, int pid) {

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

List runningApps = am.getRunningAppProcesses();

if (runningApps == null) {

return "";

}

for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {

if (procInfo.pid == pid) {

return procInfo.processName;

}

}

return "";

}

判断是否是自己当前进程

我们需要在Application的onCreate()里面判断是否是当前进程,下面是代码示例:

@Override

public void onCreate() {

super.onCreate();

String processName = getProcessName(this, android.os.Process.myPid());

if (!TextUtils.isEmpty(processName)) {

//判断进程名称是否与主程序applicationId相同

boolean defaultProcess = processName.equals("com.xxx.xxx");

//相同为主程序初始化

if (defaultProcess) {

//进行你的插件初始化

instance = this;

initParams();

initPlugin();

}

}

}

如果不是当前进程的情况,我们就不走初始化代码。希望我这边文章对同样是Android开发的小伙伴有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值