我的进阶曲线之九

 

 

 

 

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) {

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值