IPC机制
IPC:进程间通信
安卓中的多进程模式
开启多进程
在清单文件中添加:android:process
<activity android:name=".Main2Activity" android:process=":p1"></activity>
代表该activity以包名.p1作为进程名进行运行
多线程造成的问题
- 静态成员、单例模式完全失效
- 线程同步机制失效
- SharedPrerences可靠性下降
- Application多次创建
IPC
Serializable接口
java当中自带的序列化接口
Parceable接口
实现接口:
public class User implements Parcelable {
private String name;
private int age;
protected User(Parcel in) {
name = in.readString();
age = in.readInt();
}
// 省略构造器
public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) {
return new User(in);
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
//省略toString
}
这样,就可以直接在Intent中传送User类型的对象了:
Intent intent = new Intent();
intent.setClass(MainActivity.this,Main2Activity.class);
intent.putExtra("user",new User("小明",15));
startActivity(intent);
安卓中的IPC方式
- Bundle
- 文件共享 SharedPreferences本质:XML
- Messenger
- AIDL
- ContentProvider