如何理解Android BroadcastReceiver 方法onReceive的参数intent?
高洛峰
高洛峰 2017-04-17 15:00:55
[Android讨论组]

我自己只有简单的java语言的方面的知识。对于这样类的方法设计和使用无法理解。

public void onReceive(Context context,Intent intent)
{
   Toast.makeText(context,"Boot complete",Toast.LENGTH_SHORT).show();
}

这里的参数intent没有使用,我比较难以理解为何还要传入是回调函数还是封装的原因.
希望可以得到解释.

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
ringa_lee

onReceive(...)是BroadcastReceiver的方法,当系统接收到intent broadcast时,就会被调用到。

intent可以来自于sendBroadcast(Intent intent, String receiverPermission),比如,你有一个service,你需要在某些情况下向前台发送消息,就可以调用这个API,通过intent.put...可以附加很多参数。App实现一个BroadcastReceiver来接收intent,取出参数进一步处理,这是情景之一;

intent也可以来自于系统广播,比如你希望获得地理位置的更新,通常需要编写下述代码,LocationManager在将来某个时点帮忙发送某种类型的Intent,然后你就可以从intent中拿到地理位置数据了,这也是情景之一:

mLocationManager.requestLocationUpdates(provider, 0, 0, PendingIntent pi);

public class LocationReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 获取包含地理位置信息的intent
        Location loc = (Location) intent.getParcelableExtra(LocationManager.KEY_LOCATION_CHANGED);
        ......
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号