android开发之broadcast学习笔记

android中的广播用的太多了,今天稍微总结一下。

按注册方式分为两种:



1.静态注册广播:

静态注册广播就是在androidManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一个activity上点击按钮,发送一条广播,这条广播弹出一个toast,显示“静态”二字。



先看看广播接受者:

public class MyBroadcast extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"静态", Toast.LENGTH_LONG).show();
    }

}

清单文件中注册:

        <receiver android:name="com.example.staticbroadcast.MyBroadcast" >
            <intent-filter>
                <action android:name="com.test.StaticBroadcast" />
            </intent-filter>
        </receiver>

activity中的点击事件(发送广播):

        this.static_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("com.test.StaticBroadcast");
                sendBroadcast(intent);
            }
        });


2.动态注册。

动态注册一般是在activity中的onStart()方法中注册,在onStop()方法中解除注册,代码如下:

public class MainActivity extends Activity {

    private Button static_btn;
    private Button dynamic_btn;
    private BroadcastReceiver myBroadcastReceiver;

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

        this.static_btn = (Button) this.findViewById(R.id.button1);
        this.dynamic_btn = (Button) this.findViewById(R.id.Button01);
        myBroadcastReceiver = new BroadcastReceiver(){

            @Override
            public void onReceive(Context context, Intent intent) {
                Toast.makeText(MainActivity.this,"你好,这里是动态广播!", Toast.LENGTH_LONG).show();
            }

        };

//      this.static_btn.setOnClickListener(new OnClickListener() {
//
//          @Override
//          public void onClick(View v) {
//              Intent intent = new Intent();
//              intent.setAction("com.test.StaticBroadcast");
//              sendBroadcast(intent);
//          }
//      });

        this.dynamic_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //发送广播
                Intent intent = new Intent();
                intent.setAction("DynamicBroadcast");
                sendBroadcast(intent);
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        //注册广播
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("DynamicBroadcast");
        registerReceiver(myBroadcastReceiver, intentFilter);

    }

    @Override
    protected void onStop() {
        super.onStop();
        //取消注册
        unregisterReceiver(myBroadcastReceiver);
    }
}


关于静态注册的细节:

android:exported=”true”这个属性表示该广播接收器是否接收来自其他App发出的广播,如果有intent-filter属性,则默认为true,否则默认为false。



每个广播接收者都可以接受多个广播源,如果是静态注册,那么你要这么做:

        <receiver
            android:exported="true"
            android:name="com.example.staticbroadcast.MyBroadcast" >
            <intent-filter>
                <action android:name="com.test.StaticBroadcast" />
                <action android:name="com.test.StaticBroadcast2"/>
            </intent-filter>
        </receiver>

在广播接收器中这样处理:

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("com.test.StaticBroadcast")) {
            Toast.makeText(context, "静态", Toast.LENGTH_SHORT).show();
        } else if (intent.getAction().equals("com.test.StaticBroadcast2")) {
            Toast.makeText(context, "静态2", Toast.LENGTH_SHORT).show();
        }
    }

如果是动态注册,注册方式如下:

    @Override
    protected void onStart() {
        super.onStart();
        //注册广播
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("DynamicBroadcast");
        intentFilter.addAction("DynamicBroadcast2");
        registerReceiver(myBroadcastReceiver, intentFilter);

    }

广播接收器中的处理方式与静态注册一致。



关于怎样使用broadcast实现activity和fragment之间的通信可以查看我的另一篇博客使用Broadcast实现android组件之间的通信

本文参考了:http://www.cnblogs.com/lwbqqyumidi/p/4168017.html

版权声明:本文为博主原创文章,未经博主允许不得转载。若有错误地方,还望批评指正,不胜感激。

时间: 2024-08-28 16:09:58

android开发之broadcast学习笔记的相关文章

android开发之Notification学习笔记

今天总结了一下Notification的使用,与大家分享一下. MainActivity.java: 本文参考:http://www.jb51.net/article/36567.htm,http://www.cnblogs.com/linjiqin/archive/2011/12/14/2288074.html public class MainActivity extends Activity { private Button btn; private NotificationManager

Swift网络开发之NSURLSession学习笔记

先上效果图:        功能: -单个任务下载 -暂停下载任务 -取消下载任务 -断点下载 -显示下载进度及速度 -多任务下载 -分别控制各个任务 在如今移动互联网的浪潮中,手机APP越来越依赖网络通讯来交互数据.今天我们就来分享下如何通过使用NSURLSession这个Apple官方提供的网络接口实现文件下载的思路. NSURLSsession 先来介绍下NSURLSession这个接口.NSURLSession是苹果在WWDC2013上推出的用于替代它的前辈NSURLConnection

Cocos2d-x游戏开发之Lua学习笔记

下载链接 什么是Cocos2d-x 一个开源的移动2D游戏框架,MIT许可证下发布. 可以利用C++.Lua及Javascript来进行部署. 跨平台:iOS,Android,Blackberry,Tizen等. 使用Cocos开发的应用 版权声明:本文原创,转载请注明出处:http://blog.csdn.net/zhoumushui

Android开发之xUtils学习

1.一个非作者弄的xUtils API文档: http://xutilsapi.oschina.mopaas.com/overview-summary.html 2.使用xUtils用户的一些博客文档: xUtils – 注解的使用和说明--http://abug.aliapp.com/?p=78 xUtils – HttpUtils的使用(一)--http://abug.aliapp.com/?p=61 xUtils – HttpUtils的使用(二)--http://abug.aliapp.

Android开发之Fragment详解

Android开发之Fragment学习 1.简介: Fragment是Android 3.0引入的新API. Fragment代表了 Activity的子模块,因此可以把Fragment理解成Activity片段.Fragment用于自己的生命周期,也可以接受它自己的输入事件. Fragment必须被"嵌入" Activity中使用,因此虽然Fragment也拥有自己的生命周期,但Fragment的生命周期会受它所在的Activity的生命周期的控制.例如,当Activity暂停时,

Android开发之BroadcastReceiver详解

BroadcastReceiver,顾名思义就是"广播接收者"的意思,它是Android四大基本组件之一,这种组件本质上是一种全局的监听器,用于监听系统全局的广播消息.它可以接收来自系统和应用的的广播. 由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统不同组件之间的通信.比如Activity与通过startService()方法启动的Service之间通信,就可以借助于BroadcastReceiver来实现. BroadcastReceiver简

android开发之MediaPlayer+Service MP3播放器

http://blog.csdn.net/zzy916853616/article/details/6450753 [java] view plaincopy import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.apps.service.Player

Android开发之WebService介绍

经常有网友问:“在Android平台如何调用WebService”?经过沟通我发现,甚至有些朋友连什么是WebSerivce都不知道就在问怎么使用,更别说和WebService有关的SOAP.WSDL这类“火星”名词了.所以,我就想在讲解Android平台如何调用WebSerivce之前,先来介绍下WebService,看看它到底有多神秘.      记得我的硕士论文题目中就包含“Web Service”这个词,当时还是花了大量时间去研究Web Service在系统集成.企业应用整合方面的应用:

android开发之-Android 开发之4.0界面设计原则-整理

设计原则: 一.让人着迷: 1.给人惊喜:使用漂亮的界面.精心的动画.适时的音乐. 2.真实的对象比按钮和菜单更有趣 这句话的意思是:使用描述描述性的图标作为快捷方式,界面美观 当然这个快捷方式是描述一个实体的,像一个人,不是扁平化的 3.个性化设计 提供个性化设计,提高亲切感和控制感.多设计几套个性化方案 4.记住人们的使用习惯,不要重复问 记住人们的使用习惯,不要重复问.多使用可以自动记住的控件,Autocomplete控件,不要每次询问操作 二.简单我的生活 1.使用简单词.短句子. 人们