Android 讲解:广播

来源:互联网 发布:淘宝中评对卖家的影响 编辑:程序博客网 时间:2024/05/18 06:16

广播简单讲解

android 中广播有注册,还有个触发。
只有注册了这个广播,才能触发这个广播。

注册广播需要一个处理广播的类,这个类需要继承BroadcastReceiver 类,和触发广播的标示。

而触发广播需要注册时候的标示就可以触发。

动态注册


动态注册是通过代码注册广播,只有程序在运行才能触发到广播。

class NetWorkChangeBroadcastReceiver extends BroadcastReceiver{} 类是接收广播的类。
registerReceiver(mb, filter) 注册个广播,两个参数分别是接收广播对象,和过滤广播标示的对象。

Intent intent = new Intent("xxx"); 创建个intent,设置action
sendBroadcast(intent); 发送个广播,此时xxx就是广播。

MainActivity .java

package cn.met0.android.chapter3;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.widget.Toast;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //注册广播        IntentFilter filter = new IntentFilter("xxx");        MyBroadcastReceiver mb = new MyBroadcastReceiver();        registerReceiver(mb, filter);        //发送广播        Intent intent = new Intent("xxx");        sendBroadcast(intent);    }    class MyBroadcastReceiver extends BroadcastReceiver{        @Override        public void onReceive(Context context, Intent intent) {            Toast.makeText(context, "触发了广播", Toast.LENGTH_SHORT).show();;        }    }}

这里写图片描述

静态注册


通过<application></application> 标签的 <receiver></receiver> 标签注册广播,<receiver></receiver> 的 android:name 属性为接收广播的类。

<intent-filter></intent-filter> 里面的<action/> 标签的android:name 属性为广播标示。

* AndroidManifest.xml*

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="cn.met0.android.chapter3"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="19"        android:targetSdkVersion="19" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <receiver android:name=".braodcastreceiver.NetWorkChangeBroadcastReceiver">            <intent-filter >                <action android:name="xxx"/>            </intent-filter>        </receiver>    </application></manifest>

发送广播


发送广播也有两种模式:
- 标准广播
- 在广播发送后,广播接收器基本同时接收。进行处理。
- 有序广播
- 在广播发送后,广播接收器优先级越高就先执行,而且还可以截断广播,不再向下执行.

标准广播

    Intent intent = new Intent("xxx");    sendBroadcast(intent);

有序广播

    Intent intent = new Intent("xxx");    sendOrderBroadcast(intent,null);

截断广播
在广播接收器执行’abortBroadcast()’函数。

设置广播接收优先级

动态注册:
使用IntentFilter 对象的setPriority函数。

静态注册:
<intent-filter></intent-filter> 的android:priority 属性为接收广播的优先级

0 0
原创粉丝点击