正在加载一言...
0%

android-ipc

按照操作系统中的描述
线程是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

Binder

Book.java Parcelable

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();
    }
}