Android Broadcast(广播)使用

package com.broad;

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;

/**

* 广播的使用

* @author XP

*

*/

public class BroadCastUse extends Activity {

/** Called when the activity is first created. */

private Button button;

//定义广播动作

private static final String BROADCASE_ID = "broadcase";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

button = (Button)findViewById(R.id.buttonBC);

button.setOnClickListener(btnClick);

}

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

//注册广播

regeditBroad();

}

@Override

protected void onPause() {

// TODO Auto-generated method stub

super.onPause();

//销毁广播

destoryBroad();

}

private OnClickListener btnClick = new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Intent intent = new Intent(BROADCASE_ID);

//发送广播

sendBroadcast(intent);

}

};

/**

* 注册广播

*/

private void regeditBroad(){

IntentFilter filter = new IntentFilter();

//过滤定义广播动作

filter.addAction(BROADCASE_ID);

registerReceiver(broadcast, filter);

}

/**

* 销毁广播

*/

private void destoryBroad(){

if(broadcast != null){

unregisterReceiver(broadcast);

}

}

private BroadcastReceiver broadcast = new BroadcastReceiver() {

//接收广播,实现逻辑判断

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

if(intent.getAction() == BROADCASE_ID){

Log.i("console", "onReceive");

}

}

};

}

广播发送有三种形式,即,sendBroadcast(),sendOrderedBroadcast(),sendStickyBroadcast()

sendBroadcast():普通广播 (Normal broadcasts)
发送一个广播,所以监听该广播的广播接收者都可以监听到该广播。

sendOrderedBroadcast():有序广播 (Ordered broadcasts)
按照接收者的优先级顺序接收广播 , 优先级别在 intent-filter 中的 priority 中声明 ,-1000 到1000 之间 , 值越大 , 优先级越高 . 可以终止广播意图的继续传播 . 接收者可以篡改内容 .

sendStickyBroadcast():异步广播
当处理完之后的Intent ,依然存在,这时候registerReceiver(BroadcastReceiver, IntentFilter) 还能收到他的值,直到你把它去掉 , 不能将处理结果传给下一个接收者 , 无法终止广播 .

更多相关文章

  1. Android 自定义标题栏Title Bar
  2. Toast大全(默认,顶部,底部,各种自定义) Android
  3. Android 自定义APP开机启动,并打开其它App
  4. Android attrs文件(自定义)属性详解
  5. android 默认系统音量定义
  6. Android API指南(二)自定义控件04之 位置说明
  7. android 自定义权限问题
  8. Android自定义相机超详细讲解
  9. 适用于 AIDE - Android Java IDE 的幸运破解器自定义补丁

随机推荐

  1. 冰淇淋三明治 (Android(安卓)4.0)介绍
  2. Android(安卓)屏蔽Power键 Home键
  3. 开发者必看|Android(安卓)8.0 新特性及开
  4. android内存优化
  5. 【23】Android(安卓)应用程序入口探究
  6. 友坚4412开发板Android振动器系统构架的
  7. android 在init.rc中配置socket及其使用
  8. Android(安卓)设备root 原理及方法
  9. Android学习笔记(8) - GridView与ImageVi
  10. 【平台开发】-Android使用MD5加密算法加