PS:不断提升自己,是件好事...

学习内容:

1.BroadcastReceiver的使用..

2.通过BroadcastReceiver去启动Service...

1.BroadcastReceiver...

  广播接收者,用来接收系统和应用中的广播...Android广播机制用的地方还是很多的,比如说:当网络状态发生改变的时候,通过接收这条广播就能及时做出相应的响应,然后完成一些操作..这就是广播的机制...它自身并不实现图形用户界面...只是一个触发性的操作...

  使用广播是需要几个步骤的...

i.那就是建立一个类来实现一个广播,再类中定义响应的方法...来完成一些响应的操作...

ii.广播这个东西是需要注册的,不进行注册是无法使用的....

注册的方式有两种:

                一种是静态注册,静态注册就是配置AndroidManifest.xml文件进行配置,由系统管理receiver,属于常驻型的...

<!--这段代码添加在application之间就可以了。。。-->
<receiver android:name=".MyBroadcast"android:enabled="true"><intent-filter><action android:name="android.intent.action.EDIT"/></intent-filter>
</receiver>

二种则是动态注册...属于非常驻型的,并且隐藏在代码块之间...不容易发现...

private BroadcastReceiver receiver;receiver=new CallReceiver();
//动态注册广播地址...
registerReceiver(receiver,new IntentFilter("android.intent.action.EDIT"));
//解除注册的广播地址,一定要对广播机制进行注销...
unregisterReceiver(receiver);

iii.注册完成后就是进行发送广播了...这样广播接收者就可以正常工作了...先构建一个Intent对象,然后调用sendBroadcast(Intent)方法将广播发出...

    还有一点就是,对象调用了onReceive()方法时广播才是有效的,当从这个函数返回之后,这个对象就无效了..因此广播的生命周期是非常短暂的,也就仅仅十几秒的生命周期,因此不要在其中加入一些耗时的操作,耗时的操作可以交给Service去完成,广播就是完成一些非常小的操作就可以了...粘一个代码...

package com.example.broadcast_receiver;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;public class MyBroadcast extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString str=intent.getStringExtra("msg");Toast.makeText(context, str, Toast.LENGTH_SHORT).show();}
}

上面就是定义一个广播接收类,它继承于BroadcastReceiver,在其中完成一些相应的操作....

package com.example.broadcast_receiver;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Intent;
public class MainActivity extends Activity implements View.OnClickListener {private Intent intent=new Intent(Intent.ACTION_EDIT);@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.broadcast).setOnClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.broadcast:intent.putExtra("msg", "aa");MainActivity.this.sendBroadcast(intent);break;}}}

  这个就是如何在MainActivity中调用广播接收者,很简单的一个动作,就是触发按钮,然后会在屏幕上输出"aa"这条信息...很简单的一个操作,布局文件就一个按钮,没必要去粘贴...重要的是理解一下这个过程,不要忘了使用BroadcastReceiver时一定要进行注册,否则是不能进行使用的....

2.如何使用BroadcastReceiver去启动Service...

  前面已经说过,BroadcastReceiver对象的生命周期是非常短暂的...那么耗时的动作是无法在这里执行的,但是我们可以在BroadcastReceiver中去调用Service...让Service去执行耗时的服务...简单的介绍一下如何去启动Service...

i.首先我们先定义一个Service...

package com.example.broadcast_receiver;import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;public class MyService extends Service{private MediaPlayer media;@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate(){super.onCreate();media=MediaPlayer.create(MyService.this, R.raw.a);MyService.this.media.prepare();MyService.this.media.start();media.setLooping(true);}@Overridepublic void onDestroy(){super.onDestroy();}@Overridepublic void onStart(Intent intent,int startId){super.onStart(intent, startId);}
}

这里我们需要复制一首歌曲到res\raw文件夹下一首歌曲...raw文件夹我们自己进行新建...

package com.example.broadcast_receiver;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;public class MyBroadcast extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubIntent newintent =new Intent(context,MyService.class);context.startService(newintent);String str=intent.getStringExtra("msg");Toast.makeText(context, str, Toast.LENGTH_SHORT).show();}
}

     这个是广播类,从广播的内部去启动Service.....然后在AndroidManifest.xml文件中的<application>和</application>之间加入代码<service android:name=".MyService" android:enable="true"/>就搞定了...

  这样就完成了在BroadcastReceiver()内部去启动Service.....

                 

Android 学习笔记 BroadcastReceiver广播...相关推荐

  1. android广播教程,Android学习笔记(广播机制)

    1.Android的广播机制介绍 收听收音机也是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同.接受广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理.好比我们收听交 ...

  2. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  3. Android学习笔记 88. Broadcast receivers 广播接收器

    Android学习笔记 Android 开发者基础知识 (Java) -- Google Developers 培训团队 文章目录 Android学习笔记 Android 开发者基础知识 (Java) ...

  4. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  5. Android学习笔记第五篇--网络连接与云服务(一)

    Android学习笔记第五篇–网络连接与云服务 第一章.无线连接设备 ​ 除了能够在云端通讯,Android的无线API也允许在同一局域网内的设备通讯,**甚至没有连接网络,而是物理具体相近,也可以相 ...

  6. Android学习笔记21:ImageView获取网络图片

    Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...

  7. Android学习笔记(七):多个Activity和Intent

    根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...

  8. Android学习笔记26:图片切换控件ImageSwitcher的使用

    在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...

  9. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

最新文章

  1. 禁止冒名顶替Exchange用户发送邮件
  2. java mina长连接短连接_MINA实现TCP长连接(四)——断开重连
  3. Centos7 下安装配置tomcat7
  4. iOS开发网络篇—搭建本地服务器
  5. 利用matlab实现SAR 图像线性拉伸显示
  6. 使用maven 创建Quartz 任务示例_01
  7. [转]wxParse-微信小程序富文本解析组件
  8. 没法再详细的说说Linux压缩与归档命令(下-2)
  9. 买二手iphone的建议
  10. 最有效率地戒掉晚睡强迫症(熬夜强迫症、假象失眠症等等)
  11. Meta研发触觉手套,有人想在元宇宙撸猫,有人产生大胆的想法
  12. 车载注册蓝牙服务器,车载蓝牙怎么用
  13. dnfdpl服务器维护了,2019DNF心悦DPL活动地址 DNF心悦DPL活动网址及奖励一览
  14. 使用证件照研究院接口实现制作证件照
  15. 重磅开源:阿里妈妈技术质量开源了线上测试MagicOTP和性能测试平台ACP
  16. 基于JAVA汽车租赁系统 (Springboot框架) 开题报告
  17. android 屏蔽实体按键,Android中屏蔽返回键,home键以及其他实体按键
  18. vanilla_如何使用Vanilla JavaScript构建简单的全屏幻灯片
  19. Wifi wpa_supplicant 到驱动的联系
  20. 登录注册页面的示例代码

热门文章

  1. C++作用域为类的常量
  2. CentOS启动不显示图形界面直接进入命令行模式
  3. linux 命令行选项
  4. Hadoop供应商MapR:先上市, “不久之后”就会盈利
  5. (转)创建Windows服务(Windows Services)N种方式总结
  6. 获取MSSQL Server中的相关信息(视图、存储过程、触发器、表)
  7. linux 下的Memcached安装和配置
  8. 游戏开发随想之2D游戏架构
  9. 用SHELL脚本来防SSH暴力破解
  10. mysql 1067错误,服务无法启动 进程意外终止