Intent intent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

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

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

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

private Intent registerReceiverInternal(BroadcastReceiver 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时的区别,希望大神能够稍微讲解下,也请回答下上面的第二个问题,

android registerreceiver传参数,registerReceiver()方法传入的receiver为null时的具体实现?...相关推荐

  1. ThinkPHP5.1关于调用setInc方法数据库默认值为NULL时情况

    ThinkPHP5.1关于调用setInc方法数据库默认值为NULL时情况 只有当数据库的默认值为 0 的情况下,setInc 方法才能正确添加.否则当数据库默认值为 NULL 时,数据无法正确插入而 ...

  2. android registerreceiver传参数,Android应用程序注册广播接收器(registerReceiver)的过程分析...

    前面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制,因此,使用这种消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息其实就是注册广播接收器,本文 ...

  3. java传参数的方法_java中方法的参数传递机制

    无论是什么语言,要讨论参数传递方式,就得从内存模型说起,主要是我个人觉得从内存模型来说参数传递更为直观一些.闲言少叙,下面我们就通过内存模型的方式来讨论一下Java中的参数传递. 这里的内存模型涉及到 ...

  4. 使用ODBC向SQLServer存储过程传参数的方法

    存储过程如下: CREATEPROCEDURETestSP @IDint AS RETURN@@ERROR GO 网上的例子都是用Sql的对象来传参数的,于是使用相同的格式写了代码,结果不能传参数,代 ...

  5. android 序列化传参数,android 传值 序列化

    Activity之间传数据时,为了避免麻烦,往往会将一些值封装成对象,然后将整个对象传递过去.传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口. 0. ...

  6. 二维数组的传参数的方法

    如何将二维数组作为函数的参数传递 今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维 ...

  7. android 序列化传参数,Android序列化之Parcelable和Serializable的使用详解

    序列化与反序列 首先来了解一下序列化与反序列化. 序列化 由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化. 反序 ...

  8. android把255转换成字节,android 上传参数设置,字符转化成字节,包装流等

    jsp中的小知识点 在页面输入内容控制台可以打印 必须写入的内容 value="save"/> 这个的意思是把隐藏域的值提交给了save方法了 SetDooutput(tru ...

  9. android finish()传参数,48. (android开发) activity间传递数据(打开浏览器、拨号盘、传参)...

    在 android 中多个 activity 中互相访问是常见的一种操作,比如:打开系统浏览器.显示系统拨号盘等等. 做这些操作的时候,自然是需要传递一些数据过去,比如:要打开的网址.要拨打的电话号码 ...

最新文章

  1. php集成paypal付款流程,在PHP中集成PayPal标准支付
  2. 【python教程入门学习】利用Python绘制关系网络图
  3. mysql5.5+版本与mysql5.5之前版本部署主从的一些差异
  4. 实验六 快速生成树配置
  5. 手机版网页需要上服务器吗,手机能做网页服务器吗
  6. access 导入 txt sql语句_从零开始学习 MySQL 系列索引、视图、导入和导出
  7. mysql的dbconn_管道错误使用mysql.conn
  8. thinkphp5的Illegal string offset 'id'错误
  9. 一张图了解js运算符优先级
  10. Clark变换与Park(派克)变换
  11. catia逆向建模步骤_逆向流程及CATIA逆向的一些技巧
  12. vr课设《梵高世界》第一人称的解谜游戏
  13. html5 mp4文件查看,MP4Box 借用HTML5 file api 本地读取 mp4 头信息
  14. Java学习 day7 (常用API)Scanner类.Random类.Arraylist类
  15. 计算机校准颜色,直观:如何在Win7计算机中校准显示器|计算机显示器颜色校准...
  16. 新手小白如何开始网络赚钱?最靠谱的实操方法来了!
  17. python改word域_Python自动化修改word实例
  18. Supervisor 配置详解
  19. 用VB实现两幅图片半透明叠加
  20. 金融专业术语之——期限错配

热门文章

  1. 记笔记最好用的超高颜值软件之一!Typora 你值得拥有!
  2. c语言 pow优化_C语言性能优化
  3. 如何用MOS管来实现电源防反接电路
  4. 独立按键和矩阵按键c语言,单片机独立按键与矩阵按键原理图
  5. C语言实现utf-8转gbk,并解决中文标点符号问题。(没有使用API)
  6. 【java进阶06:数组】使用一维数组模拟栈数据结构 使用二维数组模拟酒店,酒店管理系统 Arrays工具类 冒泡排序算法、选择排序算法、二分法
  7. NOJ-1142-踩气球
  8. Css动画效果旋转卡牌
  9. Seq2Seq模型实现(Decoder部分)
  10. 小米将推1500元的红米note9,OPPO却继续玩低配高价