Android 注册广播的两种方式对比

Android 注册广播的两种方式对比

 1.常驻型广播

常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到,

他的注册方式就是在你的应用程序中的AndroidManifast.xml进行注册。通常说这种方式是静态注册

下面是配置例子

 <!-- 桌面 -->
<receiver android:name=".widget.DeskWidgeWeather">
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_weather_provider" />
<intent-filter>
 <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
 <action android:name="action_weather"/>
</intent-filter>
lt;/receiver>

  2.非常驻型广播

当应用程序结束了,广播自然就没有了,比如你在activity中的onCreate或者onResume中注册广播接收器

在onDestory中卸载广播接收器。这样你的广播接收器就一个非常驻型的了。这种也叫动态注册。

比如写一个监听SDcard状态的广播接收器

SdcardStateChanageReceiver sdcardStateReceiver;
@Override
protected void onCreate(Bundle savedInstanceState)
{
 super.onCreate(savedInstanceState);
 IntentFilter filter = new IntentFilter();
 filter.addAction(Intent.ACTION_MEDIA_REMOVED);
 filter.addAction(Intent.ACTION_MEDIA_EJECT);
 filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
 filter.addDataScheme("file");
 sdcardStateReceiver = new SdcardStateChanageReceiver();
 registerReceiver(sdcardStateReceiver,filter);
}
@Override
protected void onDestroy(){
 unregisterReceiver(sdcardStateReceiver);
}
class SdcardStateChanageReceiver extends BroadcastReceiver{ 

 @Override
 public void onReceive(Context context, Intent intent)
 {
 String state=android.os.Environment.getExternalStorageState();
 System.out.println("SDCard 发生改变! 状态:"+state);
 //checkSDCard();
 }
 public void checkSDCard(){
 String state=android.os.Environment.getExternalStorageState();
 System.out.println(state);
 if(state.equals(android.os.Environment.MEDIA_REMOVED ) || state .equals(android.os.Environment.MEDIA_UNMOUNTED)){
  System.out.println("SDCard 已卸载!");
 }
 }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android注册广播的两种方法分析

    本文实例分析了Android注册广播的两种方法.分享给大家供大家参考,具体如下: 1. 在AndroidManifest.xml文件中注册. 好处:一旦应用程序被安装到手机里,BroadCast Receiver就开始生效.无论应用程序进程是否运行,运用程序是否在开启状态下都可以接受到广播事件. <receiver android:name=".receiver.SMSReceiver" > <intent-filter android:priority="

  • Android 注册广播的两种方式对比

    Android 注册广播的两种方式对比  1.常驻型广播 常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到, 他的注册方式就是在你的应用程序中的AndroidManifast.xml进行注册.通常说这种方式是静态注册 下面是配置例子 <!-- 桌面 --> <receiver android:name=".widget.DeskWidgeWeather"> <meta-data android:name="and

  • 分享实现Android图片选择的两种方式

    Android选择图片的两种方式: 第一种:单张选取 通过隐式启动activity,跳转到相册选择一张返回结果 关键代码如下: 发送请求: private static final int PICTURE = 10086; //requestcode Intent intent = new Intent(); if (Build.VERSION.SDK_INT < 19) {//因为Android SDK在4.4版本后图片action变化了 所以在这里先判断一下 intent.setAction

  • php连接MySQL的两种方式对比

    记录一下PHP连接MySQL的两种方式. 先mock一下数据,可以执行一下sql. /*创建数据库*/ CREATE DATABASE IF NOT EXISTS `test`; /*选择数据库*/ USE `test`; /*创建表*/ CREATE TABLE IF NOT EXISTS `user` ( name varchar(50), age int ); /*插入测试数据*/ INSERT INTO `user` (name, age) VALUES('harry', 20), ('

  • android中可以通过两种方式调用接口发送短信

    第一:调用系统短信接口直接发送短信:主要代码如下: 复制代码 代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divideMessage(content); for (String text : divideContents) { smsManager.sendTextMessage("150xxxxxxxx&qu

  • Java创建多线程的两种方式对比

    采用继承Thead类实现多线程: 优势:编写简单,如果需要访问当前线程,只需使用this即可,无需使用Thead.currentThread()方法. 劣势:因为这种线程类已经继承了Thead类,所以不能再继承其它类. 示例代码: 复制代码 代码如下: package org.frzh.thread;    public class FirstThread extends Thread{      private int i;           //重写run方法,run方法的方法体就是线程执

  • 深入Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播.在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户

  • 详解Android中Fragment的两种创建方式

    fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认为fragment是activity的一个模块零件,它有自己的生命周期,接收它自己的输入事件,并且可以在Activity运行时添加或者删除. 两个概念:Fragment.宿主 fragment的生命周期直接受其宿主activity的生命周期的影响.例如,一旦activity被暂停,它里面所有的fra

  • Android事件处理的两种方式详解

    安卓提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理. 基于监听的事件处理 基于监听的事件处理一般包含三个要素,分别是: Event Source(事件源):事件发生的场所,通常是各个组件 Event(事件):事件封装了界面组件上发生的特定事件(通常就是用户的一次操作) Event Listener(事件监听器):负责监听事件源发生的事件,并对各种事件作出相应的响应 下面使用一个简单的案例介绍按钮事件监听器 布局文件就是简单的线性布局器,上面是一个EditText,下面是一个Bu

  • Android 启动 Service(startservice和bindservice) 两种方式的区别

    Android Service 生命周期可以促使移动设备的创新,让用户体验到最优越的移动服务,只有broadcast receivers执行此方法的时候才是激活的,当 onReceive()返回的时候,它就是非激活状态. 如果没有程序停止它或者它自己停止,service将一直运行.在这种模式下,service开始于调用Context.startService() ,停止于Context.stopService(). service可以通过调用Android Service 生命周期() 或 Se

随机推荐