Android应用可以支持开启多个进程。 通常的做法是这样
<service android:name=".NetworkService"
android:process=":network"
/>
通常我们在Application的onCreate方法中会做很多初始化操作,但是每个进程启动都需要执行到这个onCreate方法,为了避免不必要的初始化,建议按照进程(通过判断当前进程名)对应初始化.
public class MyApplication extends Application {
private static final String LOGTAG = "MyApplication";
@Override
public void onCreate() {
String currentProcessName = getCurrentProcessName();
Log.i(LOGTAG, "onCreate currentProcessName=" + currentProcessName);
super.onCreate();
if (getPackageName().equals(currentProcessName)) {
//init for default process
} else if (currentProcessName.endsWith(":network")) {
//init for netowrk process
}
}
private String getCurrentProcessName() {
String currentProcessName = "";
int pid = android.os.Process.myPid();
ActivityManager manager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()) {
if (processInfo.pid == pid) {
currentProcessName = processInfo.processName;
break;
}
}
return currentProcessName;
}
}