进程名称是否与android中的包名相同?

时间:2014-12-19 18:30:37

标签: android process task activity-manager

通过流程我的意思是我们在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);
        }
    }

如果您看到PackageManager.getApplicationInfo的文档

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

但我正在传递

processInfo.processName

其中processName是进程运行的名称。所以我们基本上使用进程名称作为包名来获取应用程序信息。

  1. 首先,这种方法是否正确?
  2. 其次,如果我们不提供活动/服务等流程,那么创建的新流程名称与包名称相同?

1 个答案:

答案 0 :(得分:10)

默认情况下,android将包名称作为进程名称。但是,如果在清单文件android:process="com.example.newprocessname"中的应用程序标记中定义流程属性,则应用程序将使用此名称运行&#34; com.example.newprocessname&#34;。

至于你的问题,

希望这能回答你的问题!

相关问题