Android开发中,一个工程对应一个AndroidManifest.xml文件,这个文件中包含有该项目的一些设置,如权限、SDk版 Activity、Service信息等。一般而言,这个文件中会有且仅有一个application节点,这个节点表示这是一个应用程序,不管它下面还 有多少子节点如Activity、Service等等。形象的说,就是这个项目生成的apk安装到Android设备后,应用程序列表中会出现一个 ICON,这个ICON就是这个程序的执行入口了。 但是,某些情况下,我们需要为我们的apk设置多个执行入口,也就是安装后在应用程序列表中出现多个ICON图标,各个ICON是APP不同模块的入口点,并且各个模块运行在不同的进程中。 可能这种需求很少见,但还是有一个现实的例子:系统中的联系人和电话这两个程序。表面看来这是两个独立的应用程序,但实际上它们只是一个应用程序的两个执 行入口而已,点击联系人图标就会进入联系人界面,点击电话图标就会进入拨号界面,这都是通过设置该项目下Activity的属性来实现的。 Activity有一个重要的属性process,这个属性是指定Activity运行时所在的进程。没有指定此属性的话,所有程序组件运行在应用程序默 认的进程中,这个进程名跟应用程序的包名一致。中所有组建元素的process属性能够为该组件设定一个新的默认值。但是任何组件都可以覆盖这个默认值, 允许你将你的程序放在多进程中运行。如果这个属性被分配的名字以:开头, 当这个activity运行时, 一个新的专属于这个程序的进程将会被创建。 以下面的代码为例,项目中有两个Activity,其中一个采用默认属性,另一个为其指定process属性以及新的ICON,这样该项目安装到设备上之 后可以发现多了两个应用程序图标,一个是应用程序默认的图标,点击后进入HelloWorldActivity;另一个是手动指定的ICON,点击后进入 NextPageActivity。这时使用adb shell查看进程可以发现,两个Activity是运行在不同的进程中的。 AndroidManifest.xml的主要内容如下: [java] view plain copy
  1. <activityandroid:name=".HelloWorldActivity"
  2. android:label="@string/app_name"
  3. android:process=":process.main">
  4. <intent-filter>
  5. <actionandroid:name="android.intent.action.MAIN"/>
  6. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  7. </intent-filter>
  8. </activity>
  9. <activityandroid:name="cn.ian.NextPageActivity"
  10. android:label="@string/nextpage"
  11. android:process=":process.sub"
  12. android:icon="@drawable/icon1"
  13. android:launchMode="singleInstance">
  14. <intent-filter>
  15. <actionandroid:name="android.intent.action.MAIN"/>
  16. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  17. </intent-filter>
  18. </activity>


通过上面的方式,为App的各个组件指定process和icon属性,便能够达到类似于一个apk中打包多个程序(模块)的目的。 ps:要特别注意,为Activity指定process属性后,还必须为其指定launchMode为singleInstance,这样才有效。

更多相关文章

  1. 利用Android两行代码真正杀死你的App
  2. Android(安卓)界面—UI开发控件
  3. [Android]使用原生Menu的一些小Tip
  4. Android(安卓)内存泄漏调试
  5. 第3.1.4节 理解任务与返回堆栈
  6. 替换Android控件默认样式 (例子:自定义进度条)
  7. Android(安卓)组件系列 -- Activity 启动流程(9.0)
  8. Android(安卓)TextView中字体行间距的设置
  9. Android进程间通信之7——Binder框架

随机推荐

  1. Android改变系统自带ProgressDialog的文
  2. Android(安卓)safe mode
  3. android屏幕常亮
  4. Android(安卓)简单的统计图
  5. 选项菜单、子菜单、上下文菜单的使用
  6. Android(安卓)Drawable
  7. Android(安卓)Studio 导入问题总结-IT蓝
  8. android sdcard 相关操作
  9. android 利用TrafficStats类获取本应用的
  10. Android(安卓)Studio生成javadoc