Android 注册BroadcastReceiver的两种方法
来源:互联网 发布:国家宏观经济数据 编辑:程序博客网 时间:2024/06/05 20:48
//第一种,在AndroidManifest.xml文件之中注册
第一种:特点:即使你的应用程序已经关闭了,它依然还是会收到广播,执行操作。
package sn.len.broad;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class BroadCastActivity extends Activity{@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Button button_sendBroad=(Button) findViewById(R.id.sendmsg);button_sendBroad.setOnClickListener(new broad());}class broad implements OnClickListener{public void onClick(View v){//第一种Intent intent=new Intent("sn.len.testsend.broad");sendBroadcast(intent);}}}在AndroidManifest.xml中注册
//接收代码
package sn.len.broad;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class TestReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent){//可以根据得到的Action来控制自己的程序//但在receiver里面最好不写什么太多的业务逻辑String action=intent.getAction();if("sn.len.testsend.broad".equals(action)){System.out.println("已经接收到广播1,执行流程如下:sendBroadcast->manifext.xml->.TestReceiver->onReceiver()");}else if("sn.len.testsend.broad2".equals(action)){System.out.println("已经接收到广播2,执行流程如下:sendBroadcast->manifext.xml->.TestReceiver->onReceiver()");}}}//第二种,在自己的应用程序中注册,不用在到Manifest.xml文件中注册了
第二种,特点:根据你程序的生命周期来做取相应的操作
看,一样可以得到,当我们按HOME键,或打开别的Activity的时候,那么根据Activity的生命则会执行onStop()那么我们可以删除掉当前的已经注册的广播,这样也就减少了系统资源的开支和浪费。
package sn.len.broad;import android.app.Activity;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class BroadCastActivity extends Activity{private TestReceiver testReceiver;private Button button_sendBroad;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//第二种//当程序创建的时候就应该注册,当然你想什么注册都可以,根据情况而定testReceiver=new TestReceiver();IntentFilter intentFilter=new IntentFilter();intentFilter.addAction("sn.len.testsend.broad2");BroadCastActivity.this.registerReceiver(testReceiver, intentFilter);button_sendBroad=(Button) findViewById(R.id.sendmsg);button_sendBroad.setOnClickListener(new broad());}class broad implements OnClickListener{public void onClick(View v){Intent intent=new Intent();intent.setAction("sn.len.testsend.broad2");sendBroadcast(intent);}}//当这个Activity处于不可见的状态下,则删除掉当前已经注册了的广播@Overrideprotected void onStop(){BroadCastActivity.this.unregisterReceiver(testReceiver);super.onStop();}}//接收代码
package sn.len.broad;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class TestReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent){//可以根据得到的Action来控制自己的程序//但在receiver里面最好不写什么太多的业务逻辑String action=intent.getAction();System.out.println(action);if("sn.len.testsend.broad".equals(action)){System.out.println("已经接收到广播1,执行流程如下:sendBroadcast->manifext.xml->.TestReceiver->onReceiver()");}else if("sn.len.testsend.broad2".equals(action)){System.out.println("已经接收到广播2,执行流程如下:sendBroadcast->manifext.xml->.TestReceiver->onReceiver()");}}}
最后在加些东西:删除应用程序
<activity android:name="com.erdo.mm.android.broadcast.UninstallReceiver"android:exported="true">这里的意思是接收外部的消息(其它App发过来的消息)
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
</intent-filter>
</activity>
package com.erdo.mm.android.broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.Uri;public class UninstallReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent){Uri packageURI = Uri.parse("package:com.erdo.mm.cartoonplayer"); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); context.startActivity(uninstallIntent);}}
- Android 注册BroadcastReceiver的两种方法
- Android注册BroadcastReceiver的两种办法及其区别
- Android BroadcastReceiver两种注册方式区别
- Android BroadcastReceiver两种注册方式区别
- BroadcastReceiver两种注册
- BroadcastReceiver的两种注册方式(静态注册和动态注册)android开发教程
- BroadcastReceiver的两种注册方式
- 安卓中BroadcastReceiver 注册的两种方式
- 安卓中BroadcastReceiver 注册的两种方式
- BroadcastReceiver两种注册方式的使用方法
- 注册BroadcastReceiver的方法
- Android BroadcastReceiver的注册
- [Android面试题-8] BroadCastReceiver的两种注册方式的异同
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
- ANDROID中BROADCASTRECEIVER的两种注册方式(静态和动态)详解
- BroadcastReceiver的两种注册方式和使用
- BroadcastReceiver的两种注册和粘性广播
- BroadcastReceiver广播接收者的两种注册方式
- shell脚本中printf小节
- shell基本编程
- Java Integer
- shell编程
- Linux设备驱动编程之内存与I/O操作
- Android 注册BroadcastReceiver的两种方法
- 回首struts1.2的ActionServlet类
- 概率密度函数估计简介
- oracle分页查询的实现
- linux内核空间与用户空间信息交互方法
- CToolTipCtrl 如何换行
- css+div常见问题整理
- 理解Object转String
- 使用 /proc 文件系统来访问 Linux 内核的内容