android-ipc介绍

2022-07-16 16:57:16 浏览数 (1)

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

0 人点赞