位置: 编程技术 - 正文

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)

  • 民营医院一般纳税人帐务处理视频税收风险
  • 建筑企业可以挂靠吗
  • 私募基金如何做大规模
  • 纳税调整会计处理
  • 企业可以申请专项债券吗
  • 差旅费包括哪些费用
  • 从价定率的计算公式
  • 开票加收税点会减少吗
  • 金蝶kis暂存的凭证怎样
  • 成本模式的投资性房地产折旧计入什么
  • 公允价值变动损益和投资收益区别
  • 行政事业单位净资产关系图
  • 税控减免税结转怎么操作
  • 计提存货跌价准备计算公式
  • 施工企业已完工程成本如何结转
  • 税收分类编码如何填写
  • 失控进项发票转出 补税做账
  • 外管证开了未用怎么办
  • 递延所得税资产和负债怎么理解
  • 机动车统一发票税率多少
  • 建筑工程老项目时间
  • 财税[2010]121号中的宗地容积率指的是什么?
  • 纳税人转让2016年以后的土地使用权
  • 这些常用的发票知识,你都知道了吗?
  • 建筑劳务公司开发票
  • 开票含税和不含税哪个划算
  • 制造费用分摊的账务处理怎么做?
  • 公司党支部的费用入账
  • 小型纳税人个人所得税
  • 公积金可以在个税前全额扣除吗
  • 企业新增股东
  • 企业年会的费用会计分录
  • win11桌面图标怎么设置
  • 腾讯电脑管家中的软件市场打不开
  • 进项税额转出能进成本吗
  • 小规模纳税人销售自己使用过的固定资产税率
  • s24evmon.exe - s24evmon是什么进程 有什么用
  • win11 build 22000.65
  • php的get
  • nginx静态文件服务器
  • 如何导入并使用数据库
  • php和js 哪个简单
  • 工商年报中营业费用包括
  • win10系统安装配置
  • vue router怎么传值
  • 待处理财产损溢在资产负债表中填哪里
  • vue 鼠标移入移出(hover)切换显示图片问题
  • python中chr函数介绍
  • mysql备份数据恢复
  • 礼物提前到会不会不好
  • 开民工工资专户函模板
  • 网吧相关规定
  • sql server 2008数据库引擎等安装失败
  • 其他收益属于利得吗
  • 个体户查账征收和核定征收哪个好
  • 契税是指什么?
  • 异地建筑服务开全电发票
  • 生产用品采购怎么购买的
  • 每个月结转损益会计分录
  • 公众责任险作用
  • 个人独资企业要报税吗
  • mysql调用java
  • xampp3.2.4安装教程与配置
  • ubuntu禁用服务命令
  • win8 分屏
  • 怎样禁用ie
  • ios太极
  • msoxmled.exe是什么软件
  • linux文件目录的含义
  • windows7 读不了u盘怎么解决
  • linux录屏软件安装
  • 系统播放音乐
  • win10系统开机蓝屏,重启就好
  • jquery tagname
  • nodejs word
  • Node.js中的核心模块包括哪些内容?
  • jquery遍历radio并选中
  • 国家税务局扬州 袁霞
  • 货物无偿赠予政府怎么写
  • 上海市信访局官网首页
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设