public abstract class ActivityManagerNative extends Binderimplements IActivityManager
/**
* Cast a Binder object into an activitymanager interface, generating
* a proxy if needed.
*/
static public IActivityManager asInterface(IBinder obj) {
if (obj == null) {
return null;
}
IActivityManager in =
(IActivityManager)obj.queryLocalInterface(descriptor);
if (in != null) {
return in;
}
return new ActivityManagerProxy(obj);
}
private static finalSingleton<IActivityManager> gDefault = newSingleton<IActivityManager>() {
protected IActivityManager create() {
IBinder b =ServiceManager.getService("activity");
if (false) {
Log.v("ActivityManager", "default service binder = "+ b);
}
IActivityManager am = asInterface(b);
if (false) {
Log.v("ActivityManager", "default service = " + am);
}
return am;
}
classActivityManagerProxy implements IActivityManager
{
static final String TAG_TIMELINE ="Timeline";
public ActivityManagerProxy(IBinder remote)
{
mRemote =remote;
}
public int startActivity(IApplicationThreadcaller, String callingPackage, Intent intent,
String resolvedType, IBinderresultTo, String resultWho, int requestCode,
int startFlags, String profileFile,
ParcelFileDescriptor profileFd,Bundle options) throws RemoteException {
mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
@Override
public boolean onTransact(int code, Parceldata, Parcel reply, int flags)
throws RemoteException {
switch (code) {
caseSTART_ACTIVITY_TRANSACTION:
{
int result = startActivity(app, callingPackage, intent,resolvedType,
resultTo, resultWho,requestCode, startFlags,
profileFile, profileFd,options);
ActivityManagerService.java
@Override
public final int startActivity(IApplicationThreadcaller, String callingPackage,
Intent intent, String resolvedType,IBinder resultTo,
String resultWho, int requestCode,int startFlags,
String profileFile,ParcelFileDescriptor profileFd, Bundle options) {