In Android development, a project corresponds to an androidmanifest. xml file, which contains some settings of the project, such as permissions, SDK activity, and service information. In general, this file has only one application node. This node indicates that this is an application, no matter how many subnodes under it, such as activity and service. In the image, after the APK generated by this project is installed on the Android device, an icon will appear in the Application List, which is the execution entry of this program.
However, in some cases, we need to set multiple execution portals for our APK, that is, multiple icon icons appear in the Application List after installation, each icon is the entry point for different app modules, and each module runs in different processes.
This requirement may be rare, but there is still a real example: the contacts and phone numbers in the system. On the surface, this is two independent applications, but they are actually only two execution portals for an application. clicking the contact icon will go to the contact interface, and clicking the phone icon will go to the dialing interface, this is achieved by setting the properties of the activity under the project.
Activity has an important attribute process, which specifies the process where the activity is running. If this attribute is not specified, all program components run in the default process of the application. The process name is consistent with the package name of the application. You can set a new default value for this component for the process attribute of all elements in. However, any component can overwrite this default value, allowing you to run your program in multiple processes. If the assigned name starts with ":", a new process dedicated to this program will be created when the activity is running.
The following code is used as an example. There are two activities in the project, one of which adopts the default attribute, and the other specifies the process attribute and the new icon, in this way, after the project is installed on the device, you can find two more application icons, one is the default application icon, and then click it to enter helloworldactivity; the other is the icon manually specified, click Next To Go To nextpageactivity. In this case, you can use the ADB shell to view the process and find that the two activities are running in different processes.
The main content of androidmanifest. XML is as follows:
<activity android:name=".HelloWorldActivity" android:label="@string/app_name" android:process=":process.main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity> <activity android:name="cn.ian.NextPageActivity" android:label="@string/nextpage" android:process=":process.sub" android:icon="@drawable/icon1" android:launchMode ="singleInstance"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>
By specifying the process and icon attributes for each component of the app, you can achieve the goal of packaging multiple programs (modules) in an APK.
PS: After you specify the process attribute for the activity, you must specify the launchmode as singleinstance.