码迷,mamicode.com
首页 > 移动开发 > 详细

Android笔记(六十)Android总结:四大组件——BroadcastReceiver篇

时间:2015-11-19 07:06:06      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

什么是BroadcastReceiver

       BroadcastReceiver是Android体系的四大组件之一,本质上是一种全局的监听器,用于监听系统全局的广播消息,正式因为其本质为全局监听,因此可以非常方便的实现系统中不同组件之间的通信。也方便我们自己的app针对系统开机、电量低等广播做出相应反映。同时我们也可以自己发送广播,来实现不同组件之间的通信

       系统接收短信广播,然后弹出Toast:

技术分享
package cn.lixyz.broadcastreceiver;

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.widget.Toast;

public class MainActivity extends Activity {

    private IntentFilter filter;
    private SMSReceiver sms;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
        sms = new SMSReceiver();
        registerReceiver(sms, filter);

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        unregisterReceiver(sms);
    }

    class SMSReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "有短信", Toast.LENGTH_SHORT).show();
            Log.d("TTTT", "~~~~~~~");
        }
    }
}
MainActivity.java

       还需要添加权限:

<uses-permission android:name="android.permission.RECEIVE_SMS" />

       运行结果:

技术分享

       

       Android的大量系统事件都会对外发送广播,下面是常见的广播常量:

       ACTION_TIME_CHANGED   系统时间被改变

       ACTION_DATE_CHANGED   系统日期被改变

       ACTION_TIMEZONE_CHANGED   系统时区被改变

       ACTION_BOOT_COMPLETED       系统启动完成

       ACTION_PACKAGE_ADDED        系统添加包

       ACTION_PACKAGE_CHANGED    系统的包改变

       ACTION_PACKAGE_REMOVED     系统的包被删除

       ACTION_PACKAGE_RESTARTED  系统的包被重启

       ACTION_PACKAGE_DATA_CLEARED    系统的包数据被清空

       ACTION_BATTERY_CHANGED     电池电量改变

       ACTION_BATTERY_LOW     电池电量低

       ACTION_POWER_CONNECTED    系统连接电源

       ACTION_POWER_DISCONNECTED      系统与电源断开

       ACTION_SHUTDOWN        系统被关闭

Broadcast的分类

       广播分为标准广播有序广播

       标准广播是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎在同一时间都会接收到这条广播,没有顺序可言,这种广播效率高,但无法截断。

       有序广播则是一种同步执行的广播,在广播发出后,同一时刻只会有一个广播接收器能够接收到这条广播消息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。优先级高的广播接收器可以先接收到,并且可以截断广播,广播被截断后,后面的广播接收器就无法再接收到了。

 

Android笔记(六十)Android总结:四大组件——BroadcastReceiver篇

标签:

原文地址:http://www.cnblogs.com/xs104/p/4976465.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!