Android 应用是可以开启多个进程的,就是在 AndroidManifest 中使用 android:process 属性,比如要给某一 Activity 指定运行进程,则在其 标签中添加 android:process 属性即可。那么,其它的三种组件是否也可以为其指定运行进程呢?也就是说,Android的四大组件是否都可以开启多进程?写个Demo来验证一下:
package com.example.testdemo;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("MainActivity", "主进程号为:" + Util.getCurProcessName(this));
startActivity(new Intent(this, TestActivity.class));
startService(new Intent(this, TestService.class));
sendBroadcast(new Intent("com.example.testdemo.TestBroadcast"));
}
}
<activity
android:name=".TestActivity"
android:process=":TestActivity">
<intent-filter>
<action android:name="TestActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service
android:name=".TestService"
android:process=":TestService"></service>
<receiver
android:name=".TestBroadcast"
android:process=":TestBroadcast">
<intent-filter>
<action android:name="com.example.testdemo.TestBroadcast"></action>
</intent-filter>
</receiver>