android application方法执行多次

原创 2016年09月12日 13:30:35

偶然发现我自定义的application中方法被调用了两次,看了一下配置文件发现百度的定位service使用了一个单独的进程:

 <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote">
            <intent-filter>
                <action android:name="com.baidu.location.service_v2.2" />
            </intent-filter>
        </service>

导致了application的多次创建。
解决办法:判断当前进程,选择不同的进程做对应的初始化操作即可。

/**
     * 获取进程名
     * @param cxt
     * @param pid
     * @return
     */
    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;
    }

然后可以在oncreate方法里进行判断:

public void onCreate() {
        super.onCreate();
        String curProcess = getProcessName(this, Process.myPid());
        if (!getPackageName().equals(curProcess)) {
            return;
        }
        ....操作
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

android开发之android:process属性_application中onCreate执行多次

应用做的匆忙,很多地方只顾实现功能,没有兼顾好性能,所以停下来重构代码优化性能,结果在打log看启动时间的时候,发现Application的onCreate执行了多次,这样导致重复初始化资源,初始化了...
  • jason0539
  • jason0539
  • 2015年05月07日 10:59
  • 12862

亲自实践:.多进程Application onCreate多次执行

最近在使用小米、友盟等推送的时候遇到这样的问题,就是突然发现Application的onCreate执行了两遍,所以,针对这一问题,我也进行了一些测试和资料查阅,对于问题原因基本不是那么模糊了,首先我...
  • aaa466412913
  • aaa466412913
  • 2016年03月21日 19:47
  • 1092

android的application类中,onCreate()被执行多次的原因及解决方案

当App中有多个进程的时候,android的application类中,onCreate()就会被执行多次,所以,我们就要加多一些判断的处理,避免除了主进程的其它进程浪费系统资源! 我们需要在appl...
  • wonghoman
  • wonghoman
  • 2016年10月18日 14:58
  • 523

Android中Application的onCreate多次调用问题

1 问题描述:一个android应用需要为一个service单独开一个进程以完成与服务器交互的逻辑,同时在Application对象的onCreate方法中会执行对象的初始化操作,最主要的是有一个轮询...
  • peidonghui
  • peidonghui
  • 2015年05月27日 11:22
  • 11714

Android的Application中onCreate执行多次解决方案

一般情况下,一个应用开启一个进程,application会被执行一次,如果涉及多开进程,那情况就不同了,application就会被执行多次,下面笔者根据这问题对应用开启多进程的进行分析:androi...
  • WX_JIN
  • WX_JIN
  • 2016年03月15日 09:43
  • 7268

Android中Application的onCreate多次调用的原因和解决办法

在做个推时发现这么一个注释: 注:该方法必须在Activity或Service类内调用,一般情况下,可以在Activity的onCreate()方法中调用。由于应用每启动一个新的进程,就会调用一次Ap...
  • chy555chy
  • chy555chy
  • 2016年05月11日 15:03
  • 6064

Android的Application的oncreate()多次被调用原因并解决方案

原因    通常情况下,一个apk应用我们都是默认开启一个进程,其进程名为AndroidMainfest.xml文件中指定的应用包名,所有的基本组件都是在这个进程中进行,application会被执行...
  • qq_27103959
  • qq_27103959
  • 2017年08月18日 14:22
  • 121

Android中全局Application的onCreate多次调用问题

前两天在做Android项目过程中遇到一个问题,程序在正常运行过程中,Application的oncreate方法会被多次调用,而且没有任何异常产生,郁闷了好久………… 今天继续调试,发现这个问题出...
  • wjr2012
  • wjr2012
  • 2013年09月09日 16:24
  • 10977

Android的Application中onCreate执行多次解决方案

一般情况下,一个应用开启一个进程,application会被执行一次,如果涉及多开进程,那情况就不同了,application就会被执行多次,下面笔者根据这问题对应用开启多进程的进行分析:androi...
  • WX_JIN
  • WX_JIN
  • 2016年03月15日 09:43
  • 7268

Android中全局Application的onCreate多次调用问题

最近重构代码优化性能的时候,在log日志中发现每次启动应用时Application的onCreate执行了多次,导致了重复初始化资源,影响启动时间。最后发现这个是由独立进程引起的,即:process这...
  • xiaoxuanfeng1986
  • xiaoxuanfeng1986
  • 2015年10月29日 14:32
  • 1539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android application方法执行多次
举报原因:
原因补充:

(最多只允许输入30个字)