在Android中,Application类中我们通常会将一些应用初始化代码放在这里, 当同一个应用包含多个进程时,Application会被创建多次,导致初始化代码被重复执行,这样会导致一些意想不到的问题。
如果只让默认的进程在创建Application时执行初始化代码,就可以解决这种问题。下面贴上代码
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
// other process will create app instance.
if (!getPackageName().equals(
getProcessName(getApplicationContext(), android.os.Process.myPid()))) {
return;
}
// initialize code
}
@Nullable
public String getProcessName(Context cxt, int pid) {
ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);
if (am == null) {
return null;
}
List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
if (runningApps != null && !runningApps.isEmpty()) {
for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
if (procInfo.pid == pid) {
return procInfo.processName;
}
}
}
return null;
}
}
网友评论