码迷,mamicode.com
首页 > 移动开发 > 详细

Android 开启远程Service对Application的影响

时间:2015-03-30 13:00:08      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

正常情况下,整个android应用程序的application的onCreate方法只会在程序运行的时候执行一次,但是也有特殊情况,那就是在应用中开启了远程服务,远程服务运行在一个单独的进程当中,这个时候application的onCreate方法会被重复调用。很多时候我们希望Application中初始化方法只执行一次,因此就要进行一下判断,判断Application的onCreate方法执行是不是因为开启了远程服务。

判断的原理是通过进程id获取进程的名称,如果进程的名称和当前应用报名不一致,那么就是远程服务的进程,默认情况下主进程的名称就是应用的包名。

private String getAppName(int pID) {
		String processName = null;
		ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
		List<RunningAppProcessInfo> runningAppProcessInfos = am.getRunningAppProcesses();
		Iterator<RunningAppProcessInfo> i = runningAppProcessInfos.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.os.Process.myPid()可以获取到进程的id,通过上面的方法就可以获取到进程的名称。

远程服务的进程名称是由AndroidManifest.xml 文件中service标签下的 android:process属性来决定的。经过测试此名称必须以.开头 名称可以自己定 通过上面方法得到的远程服务的名称就是.+名称。

 

Android 开启远程Service对Application的影响

标签:

原文地址:http://www.cnblogs.com/gejs/p/4377428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!