我是靠谱客的博主 碧蓝便当,最近开发中收集的这篇文章主要介绍Android防止调用远程服务时多次初始化Application,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

不知道大家有没有遇到过, 在集成多个第三方 SDK 时 ( 比如集成环信和百度地图就会 ), 有时候 Application 的 onCreate ( ) 方法会执行多次, 这样就回导致程序崩溃, 我是这么处理的:

在 Application 的 onCreate ( ) 方法中调用 oneInit( ) 方法:

//项目的包名
public final static String PKG_NAME = "com.example.leon";
/**
* 单次初始化
*/
public void oneInit() {
int pid = android.os.Process.myPid();
String processAppName = getAppName(pid);
LogUtil.println("processAppName---" + processAppName);
//默认的app会在以包名为默认的process name下运行,如果查到的process name不是APP的process name就return掉
if (processAppName == null ||!processAppName.equalsIgnoreCase(PKG_NAME)) {
LogUtil.println("enter the service process!");
// 则此application::onCreate 是被service 调用的,直接返回
return;
}
}
private String getAppName(int pID) {
String processName = null;
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List l = am.getRunningAppProcesses();
Iterator i = l.iterator();
while (i.hasNext()) {
ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
try {
if (info.pid == pID) {
processName = info.processName;
return processName;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return processName;
}

最后

以上就是碧蓝便当为你收集整理的Android防止调用远程服务时多次初始化Application的全部内容,希望文章能够帮你解决Android防止调用远程服务时多次初始化Application所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部