IPC: Inter-Process Communication进程间通信。
1.在Android中使用多进程的方法:在四大组件的AndroidManifest中指定android:process属性
<activity android:name="com.example.suwei.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity"
android:process=":remote"/>
<activity android:name=".ThirdActivity"
android:process="com.example.suwei.hhh"/>
现在打开MainActivity--SecondActivity--ThirdActivity, 输入 adb shell ps | grep com.example.suwei 查看包名为com.example.suwei的进程:
(未指定process的Activity的默认进程名为包名com.example.suwei.mytest)
注:进程名以“:”开头的进程属于当前应用的私有进程,其它应用的组件不可以和它跑在同一个进程中,而进程名不以“:”开头的进程属于全局进程,其他应用可以通过ShareUID方式和它跑在同一个进程中。
在多进程模式中,不同进程的组件拥有独立的虚拟机,Application和内存空间。
2.Parcelable接口
public class User implements Parcelable { public int userId; public String userName; public boolean isMale; public User(int userId,String userName,boolean isMale){ this.userName = userName; this.userId = userId; this.isMale = isMale; } public int describeContents(){ return 0; } public void writeToParcel(Parcel out,int flags){ out.writeInt(userId); out.writeString(userName); out.writeInt(isMale ? 1 : 0); } public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>(){ @Override public User createFromParcel(Parcel source) { return new User(source); } @Override public User[] newArray(int size) { return new User[size]; } }; private User(Parcel in){ userId = in.readInt(); userName = in.readString(); isMale = in.readInt() == 1; } }