与Service相似,在android中还有一种运行在后台的4大组件之一,他就是broadCcast,但是他不用考虑是否有接受的对象,只需要考虑发送即可。

要想使用BroadCast我们可以使用两种方法

第一:将broadCcast配置到配置文件当中。

第二:将broadCcast与class文件进行绑定。

下面我们分别来进行说明。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="134dp"android:text="开启通知" /></RelativeLayout>

广播类

package com.example.broadcast;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;public class BroadCastUtil extends BroadcastReceiver {
public void BroadcastReceiver(){System.out.println("**一个广播事件被建立");
}@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub
Toast.makeText(context, "广播已经启动", 2).show();}}

主文件

package com.example.broadcast;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends Activity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// 设置过滤Intent intent = new Intent(Intent.ACTION_EDIT);// 开启广播MainActivity.this.sendBroadcast(intent);}});}}

在 application节点下增加 配置

<receiver android:name="BroadCastUtil" android:enabled="true" ><intent-filter ><action android:name="android.intent.action.EDIT"/></intent-filter> </receiver>

使用registerReceiver(BroadcastReceiver, IntentFilter)进行绑定过滤操作

其他的不用进行改变只用改变

主文件 就OK

package com.example.broadcast;import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends Activity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// 设置过滤Intent intent = new Intent("com.example.broadcast");IntentFilter filter=new IntentFilter("com.example.broadcast");BroadCastUtil broadCastUtil=new BroadCastUtil();MainActivity.this.registerReceiver(broadCastUtil, filter);// 开启广播MainActivity.this.sendBroadcast(intent);}});}}

这样进行绑定和配置的话,配置文件中就不需要配置信息了 。

使用广播启动Service

Service

package com.example.broadecast2;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;public class MyService extends Service {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubSystem.out.println("** SERVICE onCreate");super.onCreate();}@Overridepublic void onDestroy() {// TODO Auto-generated method stubSystem.out.println("** SERVICE onDestroy");super.onDestroy();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubSystem.out.println("** SERVICE onStartCommand");return Service.START_CONTINUATION_MASK;}}<strong>
</strong>

BroadCask

package com.example.broadecast2;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;public class MyBroadeCast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent1) {context.startService(new Intent(context,MyService.class)) ;}
}

Main

package com.example.broadecast2;import android.os.Bundle;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.Menu;
//使用 广播启动服务
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent =new Intent("com.example.broadecast2.DEMO");MainActivity.this.sendBroadcast(intent);}}



使用广播进行闹钟的控制

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TimePickerandroid:id="@+id/timePicker1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/button1"android:layout_alignBottom="@+id/button1"android:layout_alignParentRight="true"android:text="取消闹钟" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/timePicker1"android:layout_alignParentBottom="true"android:layout_marginBottom="30dp"android:text="设置闹钟" /><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@+id/button1"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_marginBottom="62dp"android:text="当前未设置闹钟"android:textAppearance="?android:attr/textAppearanceLarge" /></RelativeLayout><strong>
</strong>

对话框

package com.example.broadcast3;import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;public class AlertMessage extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);new AlertDialog.Builder(this).setIcon(R.drawable.b9).setTitle("闹钟时间到").setMessage("当前时间为:"+ new SimpleDateFormat("yyyy年MM月dd日 HH时 mm分 ss秒").format(new Date())).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubAlertMessage.this.finish();}}).create().show();}
}

广播类

package com.example.broadcast3;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;public class MyBroadCast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubIntent it = new Intent(context, AlertMessage.class);it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(it);}}

Main

package com.example.broadcast3;import java.util.Calendar;import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
import android.widget.Toast;public class MainActivity extends Activity {
private Button set,delete;
private TextView info;
private TimePicker time;
private int hour ;
private int minute;
private Calendar calendar = Calendar.getInstance() ;
private AlarmManager alarm;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);set=(Button)this.findViewById(R.id.button1);delete=(Button)this.findViewById(R.id.button2);info=(TextView)this.findViewById(R.id.textView1);time=(TimePicker)this.findViewById(R.id.timePicker1);time.setIs24HourView(true);this.alarm = (AlarmManager) super.getSystemService(Context.ALARM_SERVICE) ;time.setOnTimeChangedListener(new OnTimeChangedListener() {@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute) {// TODO Auto-generated method stubMainActivity.this.hour=hourOfDay;MainActivity.this.minute=minute;MainActivity.this.calendar.setTimeInMillis(System.currentTimeMillis()) ;MainActivity.this.calendar.set(Calendar.HOUR_OF_DAY, hourOfDay) ;MainActivity.this.calendar.set(Calendar.MINUTE, minute) ;MainActivity.this.calendar.set(Calendar.SECOND, 0) ;MainActivity.this.calendar.set(Calendar.MILLISECOND, 0) ;}});set.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent =new Intent(MainActivity.this, AlertMessage.class);intent.setAction("com.example.broadcast3");PendingIntent sender=PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);MainActivity.this.alarm.set(AlarmManager.RTC_WAKEUP,MainActivity.this.calendar.getTimeInMillis(), sender);MainActivity.this.info.setText("闹钟响起的时间是:"+ MainActivity.this.hour + "时"+ MainActivity.this.minute + "分。");Toast.makeText(MainActivity.this, "闹钟设置成功!",Toast.LENGTH_LONG).show();}});delete.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (MainActivity.this.alarm != null) {Intent intent = new Intent(MainActivity.this,MyBroadCast.class);intent.setAction("org.lxh.action.setalarm") ;PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);MainActivity.this.alarm.cancel(sender) ;   // 取消MainActivity.this.info.setText("当前没有设置闹钟。") ;Toast.makeText(MainActivity.this, "闹钟删除成功!",Toast.LENGTH_LONG).show();}}});}}

下节预报:android基本绘图


从零开始学androidBroadCast广播.四十五.相关推荐

  1. 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。...

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 简介 iOS中的很多小功能都 ...

  2. 四十五岁还能学计算机专业吗,女人40到45岁之间该学点什么技术好?

    四十岁到四十五岁之间,学电脑比较好. 最基本的学习步骤包括以下四个方面: 第一步:学会启动电脑. 把电脑的各个部分都连接好之后,检查主机和显示器的电源线是否已经接好,然后就可以启动电脑了. 主机的电源 ...

  3. 【Visual C++】游戏开发笔记四十五 浅墨DirectX教程十三 深度测试和Z缓存专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8607864 作者:毛星云(浅墨 ...

  4. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  5. 40岁想在职读计算机博士,年龄超过四十五岁还有机会报考在职博士吗

    我国一直都在强调"活到老,学到老",所以我国正在向学习型社会发展.因此,我们每一个人都要树立终身学习的理念,只有让自己不断的进步,才不会被快速发展的社会所淘汰.有很多人想要报考在职 ...

  6. [Python从零到壹] 四十五.图像增强及运算篇之图像灰度非线性变换详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

    孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自学 ...

  8. 【正点原子STM32连载】第四十五章 SD卡实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  9. Python编程基础:第四十五节 方法链Method Chaining

    第四十五节 方法链Method Chaining 前言 实践 前言 方法链是指一个对象一次调用其自身的多个方法,通常写作对象.方法1.方法2.由于这种调用方法看起来像一个链条,所以我们将其称作方法链. ...

  10. 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)

    从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库) 原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添 ...

最新文章

  1. tf.keras.optimizers.Adam 优化器 示例
  2. 处理自己的数据集_手写代码实现KDD CUP99数据集的数据归一化处理
  3. oracle yum 本地源,Linux YUM本地源配置
  4. 和php结合实现分页js代码,无JS,完全php面向过程数据分页实现代码
  5. oa提醒模块要素_OA系统进军贸易行业,高效完成CRM管理
  6. C# MD5加密与解密
  7. 六石管理学:使用排除法解决问题
  8. Python实现扫码工具
  9. 如何理解希尔伯特空间?
  10. 典型相关分析(CCA)原理及例子
  11. Python实现二维码扫码登录
  12. 一文带你认清云服务器和轻量应用服务器的区别
  13. 信息安全从业者书单推荐(2020.6.28更新)
  14. Centos 安装 glib
  15. 长阳土家族自治县政府与升哲科技达成战略合作
  16. Unity 制作旋转门 推拉门 柜门 抽屉 点击自动开门效果 开关门自动播放音效 (附带编辑器扩展代码)
  17. linux之mmc子系统
  18. Linux高并发服务器开发---笔记2(多进程)
  19. java字符串替换多个字符串_java 字符串替换函数replaceAll 一次同时替换多个字符串...
  20. 定制你的语音识别-并行语音识别解码空间

热门文章

  1. Win10下Eclipse运行环境的安装及使用
  2. 前端运行python代码几种方式_前端和python
  3. 此更新不适用你的计算机
  4. python快速查城市的地理坐标
  5. android 备忘录 知乎,实用的语音转文字软件,知乎大佬力荐!会议纪要好帮手
  6. RHCE认证考试时间是什么时候?
  7. unity3d大型互动照片墙
  8. python snap7开发手册_python-snap7开发笔记
  9. matlab液体湿润模拟,【水文模型】01 三水源新安江模型
  10. 【计算机毕业设计】疫情社区管理系统的设计与实现 (新增-健康打卡)