Android多进程导致多次初始化Application
2016-03-24 16:33
239 查看
最近项目中遇到一个问题:APP运行2个进程,然后发现APP的Application的onCreate被调用了两次,导致Application初始化了两次,造成app启动的时候非常缓慢而且已启动占用的内存很大,因为两个进程都初始化了相同的资源,而且两个进程是相互独立的,所以各自初始化的资源都是独立的,也就是初始化了两份一样的资源;
原因:APP运行多进程导致Application被初始话多次
解决方案:获取当前进程的名称,然后根据进程名称匹配你要初始化的进程,再初始化相关进程的Applicaition
然后在Application里面添加:
原因:APP运行多进程导致Application被初始话多次
解决方案:获取当前进程的名称,然后根据进程名称匹配你要初始化的进程,再初始化相关进程的Applicaition
public static String getProcessName(Context cxt, int pid) { ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses(); if (runningApps == null) { return null; } for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) { if (procInfo.pid == pid) { return procInfo.processName; } } return null; }
然后在Application里面添加:
// 多进程导致多次初始化Application,这里只初始化App主进程的Application String curProcessName = getCurProcessName(this); if (!curProcessName.equals(getPackageName())) { return; }
相关文章推荐
- (4.1.36.10)[Android]Android字体高度的研究
- Android调试驱动抓log的方法
- Android中Volley框架Get,POST封装使用及自动解析JSON
- 通常在使用Android的getActionBar()的时候报空指针异常,通常有5种原因。
- Android系统关机或重启的几种实现方式
- appium – 那些工具
- android 数据传递——实例化对象调用方法
- 深入理解Objective-C的Runtime机制
- Android图片处理-相机、相处简单调用
- ListView和GridView与ScrollView冲突只显示一行的问题
- [LeetCode][数论]Happy Number
- IOS 封装上线 All object files and libraries for bitcode must be generated from.
- Android中退出多个Activity应用
- android activity onWindowFocusChanged函数的使用场景
- 关于16年2月14日以后上传AppStore出现:Missing iOS Distribution signing identity for...的问题
- 自定义ViewGroup,流式布局FlowLayout
- android 高效加载大图
- Android 特色开发,基于位置的服务
- Win8换成Win7系统问题小结(修改主板BIOS方法)
- Android异常和工具使用笔记