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执行了多次,这样导致重复初始化资源,初始化了...

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

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

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

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

Android防止调用远程服务时多次初始化Application

Android 集成第三方SDK Application多次初始化

Android多进程app中Application回调onCreate()方法被执行多次分析及解决

问题描述 最近工作中碰到一个问题,在优化app,使用DDMS查看Application log过程中看到,app启动了三个进程,一个主进程,两个附带的进程。如下图可看到一个app启动的三个进程。 自...

android application的使用方法

如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用App...
  • hyjzcy
  • hyjzcy
  • 2012年09月14日 07:48
  • 218

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

一般情况下,一个应用开启一个进程,application会被执行一次,如果涉及多开进程,那情况就不同了,application就会被执行多次,下面笔者根据这问题对应用开启多进程的进行分析: an...

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

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

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

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

Android Application对象必须掌握的七点

1:Application是什么?           Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个...
  • qu213
  • qu213
  • 2013年08月07日 10:20
  • 402
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android application方法执行多次
举报原因:
原因补充:

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