/********************************************************************************************/
向外提供接口的:
frameworks/base/core/java/android/app/IProcessObserver.aidl
package android.app;
/** {@hide} */
oneway interface IProcessObserver {
void onForegroundActivitiesChanged(int pid, int uid, boolean foregroundActivities);
void onProcessStateChanged(int pid, int uid, int procState);
void onProcessDied(int pid, int uid);
}
进程间只是传递对象时对对象的解析:
frameworks/base/core/java/android/content/Intent.aidl
package android.content;
parcelable Intent;
public class Intent implements Parcelable, Cloneable {
}
要实现 WriteToParcel和ReadFromParcel两个接口:
public void writeToParcel(Parcel out, int flags) {
out.writeString(mAction);
Uri.writeToParcel(out, mData);
out.writeString(mType);
out.writeInt(mFlags);
out.writeString(mPackage);
ComponentName.writeToParcel(mComponent, out);
if (mSourceBounds != null) {
out.writeInt(1);
mSourceBounds.writeToParcel(out, flags);
} else {
out.writeInt(0);
}
if (mCategories != null) {
final int N = mCategories.size();
out.writeInt(N);
for (int i=0; i<N; i++) {
out.writeString(mCategories.valueAt(i));
}
} else {
out.writeInt(0);
}
if (mSelector != null) {
out.writeInt(1);
mSelector.writeToParcel(out, flags);
} else {
out.writeInt(0);
}
if (mClipData != null) {
out.writeInt(1);
mClipData.writeToParcel(out, flags);
} else {
out.writeInt(0);
}
out.writeInt(mContentUserHint);
out.writeBundle(mExtras);
// MIUI ADD:
out.writeString(mSenderPackageName);
out.writeLong(mLaunchStartTime);
}
public void readFromParcel(Parcel in) {
setAction(in.readString());
mData = Uri.CREATOR.createFromParcel(in);
mType = in.readString();
mFlags = in.readInt();
mPackage = in.readString();
mComponent = ComponentName.readFromParcel(in);
if (in.readInt() != 0) {
mSourceBounds = Rect.CREATOR.createFromParcel(in);
}
int N = in.readInt();
if (N > 0) {
mCategories = new ArraySet<String>();
int i;
for (i=0; i<N; i++) {
mCategories.add(in.readString().intern());
}
} else {
mCategories = null;
}
if (in.readInt() != 0) {
mSelector = new Intent(in);
}
if (in.readInt() != 0) {
mClipData = new ClipData(in);
}
mContentUserHint = in.readInt();
mExtras = in.readBundle();
// MIUI ADD:
mSenderPackageName = in.readString();
mLaunchStartTime = in.readLong();
}
向外提供接口的:
frameworks/base/core/java/android/app/IProcessObserver.aidl
package android.app;
/** {@hide} */
oneway interface IProcessObserver {
void onForegroundActivitiesChanged(int pid, int uid, boolean foregroundActivities);
void onProcessStateChanged(int pid, int uid, int procState);
void onProcessDied(int pid, int uid);
}
进程间只是传递对象时对对象的解析:
frameworks/base/core/java/android/content/Intent.aidl
package android.content;
parcelable Intent;
public class Intent implements Parcelable, Cloneable {
}
要实现 WriteToParcel和ReadFromParcel两个接口:
public void writeToParcel(Parcel out, int flags) {
out.writeString(mAction);
Uri.writeToParcel(out, mData);
out.writeString(mType);
out.writeInt(mFlags);
out.writeString(mPackage);
ComponentName.writeToParcel(mComponent, out);
if (mSourceBounds != null) {
out.writeInt(1);
mSourceBounds.writeToParcel(out, flags);
} else {
out.writeInt(0);
}
if (mCategories != null) {
final int N = mCategories.size();
out.writeInt(N);
for (int i=0; i<N; i++) {
out.writeString(mCategories.valueAt(i));
}
} else {
out.writeInt(0);
}
if (mSelector != null) {
out.writeInt(1);
mSelector.writeToParcel(out, flags);
} else {
out.writeInt(0);
}
if (mClipData != null) {
out.writeInt(1);
mClipData.writeToParcel(out, flags);
} else {
out.writeInt(0);
}
out.writeInt(mContentUserHint);
out.writeBundle(mExtras);
// MIUI ADD:
out.writeString(mSenderPackageName);
out.writeLong(mLaunchStartTime);
}
public void readFromParcel(Parcel in) {
setAction(in.readString());
mData = Uri.CREATOR.createFromParcel(in);
mType = in.readString();
mFlags = in.readInt();
mPackage = in.readString();
mComponent = ComponentName.readFromParcel(in);
if (in.readInt() != 0) {
mSourceBounds = Rect.CREATOR.createFromParcel(in);
}
int N = in.readInt();
if (N > 0) {
mCategories = new ArraySet<String>();
int i;
for (i=0; i<N; i++) {
mCategories.add(in.readString().intern());
}
} else {
mCategories = null;
}
if (in.readInt() != 0) {
mSelector = new Intent(in);
}
if (in.readInt() != 0) {
mClipData = new ClipData(in);
}
mContentUserHint = in.readInt();
mExtras = in.readBundle();
// MIUI ADD:
mSenderPackageName = in.readString();
mLaunchStartTime = in.readLong();
}