2014-12-19 8 views
8

나는 우리가 android:process에 제공하는 것을 의미하고 패키지 나는 모든 실행중인 응용 프로그램의 응용 프로그램 이름을 얻고 싶었다프로세스 이름이 안드로이드의 패키지 이름과 동일합니까? 처리에 의해

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.osg.appkiller" 
    android:versionCode="1" 
    android:versionName="1.0" > 

자세한 내용 Processes and Threads - Android Developer

에서 패키지를 의미한다. 그래서 이것은 다양한 출처 (그리고 그것이 작동합니다)를보고 나서 한 것입니다.

ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    PackageManager packageManager = getPackageManager(); 
    final List<RunningAppProcessInfo> runningProcesses = activityManager.getRunningAppProcesses(); 
    for(RunningAppProcessInfo processInfo : runningProcesses) { 
     CharSequence appName = null; 
     try { 
      appName = packageManager.getApplicationLabel(packageManager.getApplicationInfo(processInfo.processName, PackageManager.GET_META_DATA)); 
     } catch (NameNotFoundException e) { 
      Log.e(TAG,"Application info not found for process : " + processInfo.processName,e); 
     } 
    } 

당신은

ApplicationInfo android.content.pm.PackageManager.getApplicationInfo(String packageName, int flags) throws NameNotFoundException 

PackageManager.getApplicationInfo

에 대한 문서를 볼 수 있지만 processName는 실행중인 프로세스의 이름입니다 내가

processInfo.processName 

을 전달하고합니다. 그래서 기본적으로 프로세스 이름을 패키지 이름으로 사용하여 응용 프로그램 정보를 얻습니다.

  1. 우선이 방법이 맞습니까?
  2. 두 번째로 우리가 활동/서비스 등에 대한 프로세스를 제공하지 않으면 패키지 이름과 동일한 이름으로 새로운 프로세스가 생성된다는 것은 사실입니까?

답변

9

기본적으로 android는 패키지 이름을 프로세스 이름으로 사용합니다. 그러나 매니페스트 파일 android:process="com.example.newprocessname"의 application 태그에 process 속성을 정의하면이 이름이 "com.example.newprocessname"으로 실행됩니다. 이 작업을하는 이유 응용 프로그램 이름은 기본 패키지 이름과 동일이 경우

희망 사항이 질문에 대한 답변입니다.