位置: 编程技术 - 正文

Android学习之BroadcastReceiver总结(android break)

编辑:rootadmin

推荐整理分享Android学习之BroadcastReceiver总结(android break),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android中broadcastreceiver,androidobb,android中broadcastreceiver,android bsd,android中broadcastreceiver,android.bp详解,android.bp详解,android ble,内容如对您有帮助,希望把文章链接给更多的朋友!

Android学习之BroadcastReceiver总结

代码下载: 系统广播事件,比如:ACTION_BOOT_COMPLETED(系统启动完成后触发),ACTION_TIME_CHANGED(系统时间改变时触发),ACTION_BATTERY_LOW(电量低时触发)等等。

② 用户自定义的广播事件。

BroadcastReceiver事件的编程流程

① 注册广播事件:注册方式有两种,一种是静态注册,就是在 AndroidManifest.xml文件中定义,注册的广播接收器必须要继承BroadcastReceiver类;另一种是动态注册,是在程序中使用Context.registerReceiver注册,注册的广播接收器相当于一个匿名类。两种方式都需要IntentFIlter。

② 发送广播事件:通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action。

③ 接收广播事件:当发送的广播被接收器监听到后,会调用它的onReceive()方法,并将包含消息的Intent对象传给它。onReceive中代码的执行时间不要超过5s,否则Android会弹出超时dialog。

BroadcastReceiver事件的编程举例

说明:该项目举例说明了4种情况的广播事件,静态注册的系统广播事件、静态注册的用户自定义广播事件、动态注册的系统广播事件和动态注册的用户自定义广播事件。

1. MainActivity.java文件内容

package com.byread;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

publicclass MainActivityextends Activity {

private ButtonsendStaticBtn;

private ButtonsendDynamicBtn;

private ButtonsendSystemBtn;

privatestaticfinal StringSTATICACTION ="com.byread.static";

privatestaticfinal StringDYNAMICACTION ="com.byread.dynamic";

//系统Action:

privatestaticfinal StringSYSTEMACTION = Intent.ACTION_BATTERY_CHANGED;

//重写Activity的onCreate方法

@Override

publicvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

sendStaticBtn = (Button)findViewById(R.id.send_static);

sendDynamicBtn = (Button)findViewById(R.id.send_dynamic);

sendSystemBtn = (Button)findViewById(R.id.send_system);

sendStaticBtn.setOnClickListener(newMyOnClickListener());

sendDynamicBtn.setOnClickListener(newMyOnClickListener());

sendSystemBtn.setOnClickListener(newMyOnClickListener());

}

//内部类,用于监听按钮消息

class MyOnClickListenerimplements OnClickListener{

@Override

publicvoid onClick(View v) {

//发送自定义静态注册广播消息

if(v.getId() == R.id.send_static){

Log.e("MainActivity","发送自定义静态注册广播消息");

Intentintent =newIntent();

intent.setAction(STATICACTION);

intent.putExtra("msg","接收静态注册广播成功!");

sendBroadcast(intent);

}

//发送自定义动态注册广播消息

elseif(v.getId() == R.id.send_dynamic){

Log.e("MainActivity","发送自定义动态注册广播消息");

Intentintent =newIntent();

intent.setAction(DYNAMICACTION);

intent.putExtra("msg","接收动态注册广播成功!");

sendBroadcast(intent);

}

// 发送系统动态注册广播消息。当手机连接充电设备时会由系统自己发送广播消息。

elseif(v.getId() == R.id.send_system){

Log.e("MainActivity","发送系统动态注册广播消息");

Intentintent =newIntent();

intent.setAction(SYSTEMACTION);

intent.putExtra("msg","正在充电。。。。");

}

}

}

//重写MainActivity的onStart()函数

@Override

protectedvoid onStart() {

super.onStart();

Log.e("MainActivity","注册广播事件");

// 1注册自定义动态广播消息

IntentFilterfilter_dynamic =new IntentFilter();

filter_dynamic.addAction(DYNAMICACTION);

registerReceiver(dynamicReceiver, filter_dynamic);

// 1注册系统动态广播消息

IntentFilterfilter_system =new IntentFilter();

filter_system.addAction(SYSTEMACTION);

registerReceiver(systemReceiver, filter_system);

}

// 2自定义动态广播接收器,内部类

private BroadcastReceiverdynamicReceiver =new BroadcastReceiver() {

@Override

publicvoid onReceive(Context context, Intent intent) {

Log.e("MainActivity","接收自定义动态注册广播消息");

if(intent.getAction().equals(DYNAMICACTION)){

String msg = intent.getStringExtra("msg");

Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();

}

}

};

// 2 系统动态广播接收器,内部类

private BroadcastReceiversystemReceiver =new BroadcastReceiver() {

@Override

Android学习之BroadcastReceiver总结(android break)

publicvoid onReceive(Context context, Intent intent) {

Log.e("MainActivity","接收系统动态注册广播消息");

if(intent.getAction().equals(SYSTEMACTION)){

String msg = intent.getStringExtra("msg");

Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();

}

}

};

}

2. 自定义静态注册广播消息接收器

package com.byread;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;

/**

*自定义静态注册广播消息接收器

* @authorzuolongsnail

*

*/

publicclass StaticReceiverextends BroadcastReceiver {

@Override

publicvoid onReceive(Context context, Intent intent) {

String msg= intent.getStringExtra("msg");

Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();

}

}

3. 系统静态注册广播消息接收器

package com.byread;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

import android.widget.Toast;

/**

*系统静态注册广播消息接收器

*

* @authorzuolongsnail

*

*/

publicclass SystemReceiverextends BroadcastReceiver {

@Override

publicvoid onReceive(Context context, Intent intent) {

if(intent.getAction().equals(Intent.ACTION_BATTERY_LOW)) {

Log.e("SystemReceiver","电量低提示");

Toast.makeText(context,"您的手机电量偏低,请及时充电", Toast.LENGTH_SHORT).show();

}

}

}

4. main.xml布局文件

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android=" android:orientation="vertical"android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextViewandroid:layout_width="fill_parent"

android:layout_height="wrap_content"android:text="@string/hello"/>

<Buttonandroid:id="@+id/send_static"android:layout_width="wrap_content"

android:layout_height="wrap_content"android:text="发送自定义静态注册广播"/>

<Buttonandroid:id="@+id/send_dynamic"android:layout_width="wrap_content"

android:layout_height="wrap_content"android:text="发送自定义动态注册广播"/>

<Buttonandroid:id="@+id/send_system"android:layout_width="wrap_content"

android:layout_height="wrap_content"android:text="发送系统动态注册广播"/>

</LinearLayout>

5. AndroidManifest.xml文件

<?xmlversion="1.0"encoding="utf-8"?>

<manifestxmlns:android=" package="com.byread"android:versionCode="1"android:versionName="1.0">

<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">

<activityandroid:name=".MainActivity"android:label="@string/app_name">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

<!--注册自定义静态广播接收器-->

<receiverandroid:name=".StaticReceiver">

<intent-filter>

<actionandroid:name="com.byread.static"/>

</intent-filter>

</receiver>

<!--注册系统静态广播接收器-->

<receiverandroid:name=".SystemReceiver">

<intent-filter>

<actionandroid:name="android.intent.action.BATTERY_LOW"/>

</intent-filter>

</receiver>

</application>

</manifest>

模块二:LocalBroadcastManager

优点:

1.应用内的广播,比Broadcast更安全

2.不牵涉到进程间通信,更有效

3.更安全

使用方式:

1.注册:

2.写一个广播接收器:

3.发送广播

4.注销广播:

android学习之选择媒体库中的图片 从媒体库中选择图片主要是启动系统相关ActivityIntenti=newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;startActivityForResult(i,RESULT_LOAD_IM

Android开发之文件浏览器 源码下载地址:

android学习之ListView总结 ListView总结在原来的基础上,增加了点击后的消息响应函数。源代码下载:

标签: android break

本文链接地址:https://www.jiuchutong.com/biancheng/368655.html 转载请保留说明!

上一篇:学习android之Service(android secure)

下一篇:android学习之选择媒体库中的图片(android xui)

  • 股权转让后企业注销个人所得税怎么处理
  • 从厂家拿货怎么谈价格
  • 新入职员工哪月交社保
  • 技术服务费入账
  • 年金个税税率表
  • 企业捐赠扣除标准,超出部分
  • 残保金税率是万元以下吗
  • 什么样的运输发动机最好
  • 电子发票报销怎么用
  • 折价购入股权
  • 非公司私营企业属于什么类型
  • 小规模纳税人增值税优惠政策
  • 未分配利润转增股本 个人所得税
  • 小规模纳税人城镇土地使用税减免政策
  • 减免税款交企业所得税吗
  • 小微企业核定征收所得税税率
  • 原材料意外损失会计分录
  • 建筑施工企业在12个月内连续发生
  • 电脑不能连接wifi只能连宽带
  • 佣金代扣代缴增值税需要缴纳附加税吗
  • qqlogin.exe是什么进程 qqlogin.exe应用程序错误解决办法
  • 什么是集成显卡长什么样
  • 外币交易犯法吗
  • win10电脑c盘满了怎么转移到d盘
  • php的数据类型主要有哪几种
  • php fopen()
  • 盈余积累转增股本什么意思
  • 限售股转让个人所得税退税
  • laravel框架用到哪些设计模式
  • 双峰骆驼什么意思
  • 前端是指什么工作
  • vue加载速度慢
  • centos7搭建http
  • 装修费用记什么科目
  • 公允价值变动收益借方是增加还是减少
  • 哪些行业不用缴纳增值税
  • 停车费报销怎么说委婉
  • 主营业务税金及附加包括增值税吗
  • 现代服务包括哪些内容是什么
  • 施工企业会计科目
  • 个体小企业怎么缴纳个人所得税
  • 外购商品职工福利进项税额转出如何记账?
  • 简易计税指的是增值税吗
  • 年度亏损计提所得税吗
  • 长期股权投资的初始投资成本
  • 税前弥补以前年度亏损
  • 固定资产清理后折旧怎么处理
  • 进项税额转出如何计算增值税
  • 贴现凭证是什么意思
  • 交车辆购置税需要什么材料
  • 如何理解预付年金终值期数和系数和记忆方法
  • 公司销售二手车怎么开票
  • 打印的机票行程单怎么看
  • 待处理财产损溢借贷反向
  • 负数发票要给税务局吗
  • 员工预支工资可以从工资里扣吗
  • sqlserver CONVERT()函数用法小结
  • 详述目标成本法的内容和步骤
  • Windows Server 2008下的自助安全防御
  • linux中的ls命令的功能是变换工作目录到目标指定目录
  • -mtime +3详解 linux
  • winxp系统怎么安装
  • win8搜索不到文件
  • win10 2020h1
  • zmweb.exe是什么进程
  • win7系统电脑无限重启
  • win8的开始和运行在哪儿
  • win8的设置
  • js闭包的应用
  • node.js+mysql
  • vuex的作用和使用场景
  • 小说温故知新
  • python的设置
  • js实现聊天框
  • jquery移动版
  • python simple
  • 律师到税务机关调取信息
  • 为什么增值税是销项税减进项税
  • PLC交通信号灯控制程序设计
  • 发票勾选后必须抵扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设