kafukwen
V2EX  ›  Android

PackageManagerService.queryIntentReceivers 方法查询 intent 对应的静态广播,请问其中这个 reader synchronized 部分是干什么的

  •  
  •   kafukwen · Mar 20, 2019 · 11942 views
    This topic created in 2658 days ago, the information mentioned may be changed or developed.
    private @NonNull List<ResolveInfo> queryIntentReceiversInternal(Intent intent,
                String resolvedType, int flags, int userId) {
            if (!sUserManager.exists(userId)) return Collections.emptyList();
            flags = updateFlagsForResolve(flags, userId, intent);
            ComponentName comp = intent.getComponent();
            if (comp == null) {
                if (intent.getSelector() != null) {
                    intent = intent.getSelector();
                    comp = intent.getComponent();
                }
            }
            if (comp != null) {
                List<ResolveInfo> list = new ArrayList<ResolveInfo>(1);
                ActivityInfo ai = getReceiverInfo(comp, flags, userId);
                if (ai != null) {
                    ResolveInfo ri = new ResolveInfo();
                    ri.activityInfo = ai;
                    list.add(ri);
                }
                return list;
            }
    
            // reader
            synchronized (mPackages) {
                String pkgName = intent.getPackage();
                if (pkgName == null) {
                    return mReceivers.queryIntent(intent, resolvedType, flags, userId);
                }
                final PackageParser.Package pkg = mPackages.get(pkgName);
                if (pkg != null) {
                    return mReceivers.queryIntentForPackage(intent, resolvedType, flags, pkg.receivers,
                            userId);
                }
                return Collections.emptyList();
            }
        }
    
    1 replies    2019-03-20 17:12:07 +08:00
    cxtrinityy
        1
    cxtrinityy  
       Mar 20, 2019
    getReceiverInfo()是从 mSettings 里查找,未找到就从 mReceivers 查找呗,查找源不通而已
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   926 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 21:04 · PVG 05:04 · LAX 14:04 · JFK 17:04
    ♥ Do have faith in what you're doing.