按照操作系统中的描述 线程是CPU调度的最小单元 同时线程是一种有限的系统资源 进程一般指一个执行单元 在PC和移动设备上指一个应用 一个进程可以包含多个线程 因此进程和线程是包含与被包含的关系 最简单的情况下一个进程中可以只有一个线程即主线程 在Android里面主线程也叫UI线程 在UI线程里才能操作界面元素
Android中进程间通信方式是Binder Android上还支持Socket 通过Socket可以实现两个终端之间的通信 一个设备上的两个进程通过Socket通信也可以
早期每个应用最大内存是16mb
多进程会造成的问题: 1.静态变量和单例模式完全失效。(多个虚拟机 内存不共享) 2.线程同步机制完全失效 3.SharedPreferences的可靠性下降(会导致数据丢失) 4.Application会多次创建(独立虚拟机)
跨进程通信的方式 Intent来传递数据 共享文件和SharedPreferences 基于Binder的Messenger和AIDL以及Socket
Binder
Book.java Parcelable
代码语言:javascript复制public class Book implements Parcelable {
public int bookId;
public String bookName;
public Book(int bookId, String bookName) {
this.bookId = bookId;
this.bookName = bookName;
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(bookId);
out.writeString(bookName);
}
public static final Parcelable.Creator<Book> CREATOR = new Creator<Book>() {
@Override
public Book createFromParcel(Parcel parcel) {
return new Book(parcel);
}
@Override
public Book[] newArray(int i) {
return new Book[i];
}
};
private Book(Parcel in) {
bookId = in.readInt();
bookName = in.readString();
}
}