registerReceiver()方法传入的receiver为null时的具体实现?
澳门博彩导航网址
澳门博彩导航网址
当前位置 : 澳门博彩导航网址 > 网上赌博新址

registerReceiver()方法传入的receiver为null时的具体实现?

Intent intent = registerReceivernull, new IntentFilterIntent.ACTION_BATTERY_CHANGED;

查询电量的时候可以通过上面这种方式返回一个intent,从这个intent中也确实能够拿到我们想要要的信息,但是平常我们注册普通的广播的时候都习惯传入一个receiver,如果有电量改变就会不停的执行receiver的onReceive方法,我的疑问就是1.这两种注册方法有什么不同之处吗?2.如果我频繁的使用传入空receiver的方法进行电量查询会有什么麻烦吗?

------------------分割线-------------------------------

我也去稍微看了下registerReceiver()方法的源码,应该是在ContextImpl类中的

       

   private Intent registerReceiverInternalBroadcastReceiver receiver, int userId,
            IntentFilter filter, String broadcastPermission,
            Handler scheduler, Context context {
        IIntentReceiver rd = null;
        if receiver != null {
            if mPackageInfo != null && context != null {
                if scheduler == null {
                    scheduler = mMainThread.getHandler;
                }
                rd = mPackageInfo.getReceiverDispatcher
                    receiver, context, scheduler,
                    mMainThread.getInstrumentation, true;
            } else {
                if scheduler == null {
                    scheduler = mMainThread.getHandler;
                }
                rd = new LoadedApk.ReceiverDispatcher
                        receiver, context, scheduler, null, true.getIIntentReceiver;
            }
        }
        try {
            return ActivityManagerNative.getDefault.registerReceiver
                    mMainThread.getApplicationThread, mBasePackageName,
                    rd, filter, broadcastPermission, userId;
        } catch RemoteException e {
            return null;
        }
    }

但是作为一个菜鸟还是没能理解这个方法中receiver为null时的区别,希望大神能够稍微讲解下,也请回答下上面的第二个问题,

  1. 区别是一次有效和持续有效,null的方式只在当时调用时获取信息,之后的变化就接收不到了,因为你没有接收者;

  2. 先讨论你的场景需求,理论上频繁调用查询并不会有什么影响,只是你的频繁是有多大频率,有没有实际的意义。

栏目列表

广告位

澳门博彩导航网址