位置: 编程技术 - 正文

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)

  • 配建保障房税收规定
  • 企业取得房租收据怎么写
  • 计提环境保护税怎么做分录
  • 电费为什么计入成本费用
  • 研发辅助账科目设置
  • 怎么把预付账款转到管理费用
  • 小规模纳税人水电费税率
  • 买二手房没满2年多少税
  • 施工企业确认收入的方法有哪两种
  • 营改增后房地产企业如何开票
  • 出纳去银行
  • 增值税预交怎么计算
  • 民事诉讼的适用范围具体包括哪些案件
  • 营改增后取得土地转让
  • 核定征收的企业需要汇算清缴吗
  • 银行承兑汇票上的承兑日期
  • 房贷利息在哪里能看到
  • 中小五金企业如何进行成本核算
  • 企业提供技术咨询服务的企税优惠政策
  • 1697510728
  • 七彩虹主板 wol
  • 帮忙介绍业务
  • 将u盘格式化
  • php require的用法
  • hiddenalbum是什么文件夹
  • 耕地佔用税的缴纳期限
  • 股权转让定金怎么做账
  • 怎么启用framework3.5
  • ios.开发
  • 企业会计准则条文释义与案例详解
  • php json 对象
  • php 常用算法
  • 物业水电费可以差额征税吗
  • 汇兑损益计入哪里
  • auth命令
  • 公司账户转账给个人要交税吗
  • 什么是企业管理的首要职能
  • 金税盘怎么增加收款人和复核人
  • 在计算土地增值税时质量保证金可以扣除
  • asp连接sqlserver数据库的三种方式是什么?
  • 待报解预算收入是什么意思,扣了钱
  • 长期股权投资成本法
  • 结转应交税金的分录
  • 餐饮业税务申报
  • 固定资产报废该怎么处理
  • MSSQL output使用
  • 汇算清缴纳税调整需要做账吗
  • 符合规定的国内旅客运输发票可以作为扣税凭证吗
  • 进出口贸易出纳主要做什么
  • 机构信用代码证在哪里办理
  • 社保费单位减免
  • 接受控股股东赠与的一项非货币性资产
  • 存货周转率多少算合理
  • 私人出租房子发圈文案
  • 作废的支票由谁保管
  • 分红做什么会计分录
  • 补缴的增值税可以抵扣吗
  • 要约收购期满
  • mysql数据库迁移方案
  • softmangerlite.exe是什么进程 有什么用
  • ubuntu如何安装wps
  • linux 应用程序
  • cmd是什么意思 视频
  • mmtraylsi.exe是什么进程 有什么作用 mmtraylsi进程查询
  • 如何删除win7
  • win10 mobile 1709
  • ghost7sp1安装教程
  • 预装win7旗舰版
  • win7win8双系统怎么装
  • ubuntu14.04.6安装教程
  • js中date对象
  • Visual Studio 2013 Tools for Unity安装目录,Visual Studio 2013 Tools.unitypackage
  • java timer
  • 批处理命令教程
  • shell字符串比较相等
  • js中的require函数
  • 如何动态加载外部文件
  • 两不一欠自查报告怎么写
  • 免征增值税的销售额
  • 安徽省建筑企业资质查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设