Android 開啟遠程Service對Application的影響


正常情況下,整個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屬性來決定的。經過測試此名稱必須以.開頭 名稱可以自己定 通過上面方法得到的遠程服務的名稱就是.+名稱。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM