Android开发艺术探索 第2章 IPC机制(部分内容)

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

 

posted @ 2017-06-06 14:15  why_su  阅读(157)  评论(0编辑  收藏  举报