のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

mInstrumentation

    997     public void sendOrderedBroadcast(Intent intent,
    998             String receiverPermission, BroadcastReceiver resultReceiver,
    999             Handler scheduler, int initialCode, String initialData,
   1000             Bundle initialExtras) {
   1001         IIntentReceiver rd = null;
   1002         if (resultReceiver != null) {
   1003             if (mPackageInfo != null) {
   1004                 if (scheduler == null) {
   1005                     scheduler = mMainThread.getHandler();
   1006                 }
   1007                 rd = mPackageInfo.getReceiverDispatcher( <===========
   1008                     resultReceiver, getOuterContext(), scheduler,
   1009                     mMainThread.getInstrumentation(), false);
   1010             } else {
   1011                 if (scheduler == null) {
   1012                     scheduler = mMainThread.getHandler();
   1013                 }
   1014                 rd = new LoadedApk.ReceiverDispatcher(
   1015                         resultReceiver, getOuterContext(), scheduler, null, false).getIIntentReceiver();
   1016             }
   1017         }
   1018         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
   1019         try {
   1020             intent.setAllowFds(false);
   1021             ActivityManagerNative.getDefault().broadcastIntent(
   1022                 mMainThread.getApplicationThread(), intent, resolvedType, rd,
   1023                 initialCode, initialData, initialExtras, receiverPermission,
   1024                 true, false, Binder.getOrigCallingUser());
   1025         } catch (RemoteException e) {
   1026         }
   1027     }
   1043     public void sendStickyOrderedBroadcast(Intent intent,
   1044             BroadcastReceiver resultReceiver,
   1045             Handler scheduler, int initialCode, String initialData,
   1046             Bundle initialExtras) {
   1047         IIntentReceiver rd = null;
   1048         if (resultReceiver != null) {
   1049             if (mPackageInfo != null) {
   1050                 if (scheduler == null) {
   1051                     scheduler = mMainThread.getHandler();
   1052                 }
   1053                 rd = mPackageInfo.getReceiverDispatcher( <===========
   1054                     resultReceiver, getOuterContext(), scheduler,
   1055                     mMainThread.getInstrumentation(), false);
   1056             } else {
   1057                 if (scheduler == null) {
   1058                     scheduler = mMainThread.getHandler();
   1059                 }
   1060                 rd = new LoadedApk.ReceiverDispatcher(
   1061                         resultReceiver, getOuterContext(), scheduler, null, false).getIIntentReceiver();
   1062             }
   1063         }
   1064         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
   1065         try {
   1066             intent.setAllowFds(false);
   1067             ActivityManagerNative.getDefault().broadcastIntent(
   1068                 mMainThread.getApplicationThread(), intent, resolvedType, rd,
   1069                 initialCode, initialData, initialExtras, null,
   1070                 true, true, Binder.getOrigCallingUser());
   1071         } catch (RemoteException e) {
   1072         }
   1073     }
   1102     private Intent registerReceiverInternal(BroadcastReceiver receiver,
   1103             IntentFilter filter, String broadcastPermission,
   1104             Handler scheduler, Context context) {
   1105         IIntentReceiver rd = null;
   1106         if (receiver != null) {
   1107             if (mPackageInfo != null && context != null) {
   1108                 if (scheduler == null) {
   1109                     scheduler = mMainThread.getHandler();
   1110                 }
   1111                 rd = mPackageInfo.getReceiverDispatcher( <=====
   1112                     receiver, context, scheduler,
   1113                     mMainThread.getInstrumentation(), true);
   1114             } else {
   1115                 if (scheduler == null) {
   1116                     scheduler = mMainThread.getHandler();
   1117                 }
   1118                 rd = new LoadedApk.ReceiverDispatcher(
   1119                         receiver, context, scheduler, null, true).getIIntentReceiver();
   1120             }
   1121         }
   1122         try {
   1123             return ActivityManagerNative.getDefault().registerReceiver(
   1124                     mMainThread.getApplicationThread(), mBasePackageName,
   1125                     rd, filter, broadcastPermission);
   1126         } catch (RemoteException e) {
   1127             return null;
   1128         }
   1129     }
    580     public IIntentReceiver getReceiverDispatcher(BroadcastReceiver r,
    581             Context context, Handler handler,
    582             Instrumentation instrumentation, boolean registered) {
    583         synchronized (mReceivers) {
    584             LoadedApk.ReceiverDispatcher rd = null;
    585             HashMap<BroadcastReceiver, LoadedApk.ReceiverDispatcher> map = null;
    586             if (registered) {
    587                 map = mReceivers.get(context);
    588                 if (map != null) {
    589                     rd = map.get(r);
    590                 }
    591             }
    592             if (rd == null) {
    593                 rd = new ReceiverDispatcher(r, context, handler, <===
    594                         instrumentation, registered);
    595                 if (registered) {
    596                     if (map == null) {
    597                         map = new HashMap<BroadcastReceiver, LoadedApk.ReceiverDispatcher>();
    598                         mReceivers.put(context, map);
    599                     }
    600                     map.put(r, rd);
    601                 }
    602             } else {
    603                 rd.validate(context, handler);
    604             }
    605             rd.mForgotten = false;
    606             return rd.getIIntentReceiver();
    607         }
    608     }
    778         ReceiverDispatcher(BroadcastReceiver receiver, Context context,
    779                 Handler activityThread, Instrumentation instrumentation,
    780                 boolean registered) {
    781             if (activityThread == null) {
    782                 throw new NullPointerException("Handler must not be null");
    783             }
    784 
    785             mIIntentReceiver = new InnerReceiver(this, !registered);
    786             mReceiver = receiver;
    787             mContext = context;
    788             mActivityThread = activityThread;
    789             mInstrumentation = instrumentation; <======
    790             mRegistered = registered;
    791             mLocation = new IntentReceiverLeaked(null);
    792             mLocation.fillInStackTrace();
    793         }