BroadcastReceiver广播接收者(六)——粘性广播(StickyBroadcast)使用示例

MainActivity如下:

package cc.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
/**
 * Demo描述:
 * 粘性广播(StickyBroadcast)使用示例
 * 粘性广播也叫等待广播.
 *
 * 使用场景:
 * 发送一个粘性广播(StickyBroadcast),但是现在并没有一个广播接收者来接收该广播发出的数据.
 * 而是在某个时间后,才注册一个receiver,但是也能收到之前StickyBroadcast发出的广播.
 * 这点就和平常用的普通广播很不一样了.
 *
 * 在该示例中:
 * 1 发出一个粘性广播(StickyBroadcast)
 * 2 5秒后再启动一个Activity
 * 3 在新启动的Activity中注册receiver接收StickyBroadcast发出的数据
 *
 * 参考资料:
 * 1 http://blog.csdn.net/lamp_zy/article/details/9324979
 * 2 http://blog.csdn.net/woaieillen/article/details/7376391
 *
 * 注意权限:
 * <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
 */
public class MainActivity extends Activity {
    private Context mContext;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mContext=this;
		sendStickyBroadcastTest();
		startAnotherActivity();
	}

	//发送粘性广播
	private void sendStickyBroadcastTest() {
		Intent intent=new Intent();
		intent.setAction("cc.vv");
		intent.putExtra("time", String.valueOf(System.currentTimeMillis()));
        sendStickyBroadcast(intent);
	}

	// 启动其他Activity
	private void startAnotherActivity() {
		new Thread() {
			public void run() {
				try {
					Thread.sleep(1000*5);
					Intent intent=new Intent(mContext, AnotherActivity.class);
					mContext.startActivity(intent);
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
		}.start();

	}

}

AnotherActivity如下:

package cc.com;

import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

public class AnotherActivity extends Activity {
    private BroadcastReceiver mBroadcastReceiver=null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.another);
		registBroadcastReceiver();
	}

	//注册广播接收者
	private void registBroadcastReceiver(){
		mBroadcastReceiver=new BroadcastReceiver() {
			@Override
			public void onReceive(Context context, Intent intent) {
				System.out.println("收到了StickyBroadcast发出的数据");
				String time=intent.getStringExtra("time");
				System.out.println("发送广播的时间:"+time);
				System.out.println("当前的时间:"+System.currentTimeMillis());
			}
		};
		IntentFilter intentFilter=new IntentFilter();
		intentFilter.addAction("cc.vv");
		registerReceiver(mBroadcastReceiver, intentFilter);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		if (mBroadcastReceiver!=null) {
			unregisterReceiver(mBroadcastReceiver);
		}
	}

}

PS:两个界面布局简单得令人发指,所以不再贴出。

PPS:在电量变化的时候系统也会发出sticky广播;参考资料:http://blog.csdn.net/jaysong2012/article/details/45601001

时间: 2024-10-25 11:08:24

BroadcastReceiver广播接收者(六)——粘性广播(StickyBroadcast)使用示例的相关文章

BroadcastReceiver广播接收者(三)——利用广播在应用程序之间传递数据

 TestBroadcastA应用如下 MainActivity如下: package cc.testbroadcasta; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 利用广播在应用程序之间传递数据 * * TestBroadcastA应用中注册一个广播接收者. * TestBroadcastB应用中发出一个广播 */ public class MainActivity extends Act

Android入门:广播发送者与广播接收者详细介绍_Android

一.广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据: 广播意图就是通过Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)发送的意图,通过这个语

Android入门:广播发送者与广播接收者详细介绍

一.广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据: 广播意图就是通过Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)发送的意图,通过这个语

Android开发22——广播接收者BroadcastReceiver的原理和注册方式

一.广播机制的基本概念 当某个事件产生时(如一条短信发来或一个电话打来),android操作系统会把这个事件广播给所有注册的广播接收者,需要处理这个事件的广播接收者进行处理.其实这就是日常生活中的广播.发生一个新闻后,广播电台会广播这个新闻给打开收音机的人,对这个新闻感兴趣的人会关注,可能会拿笔记下.新闻就是事件,广播电台就是android系统,打开收音机的人就是广播接收者,感兴趣的人就是需要处理该事件的广播接收者,拿笔记下就是对该事件进行的操作.   二.广播的分类--普通广播和有序广播 ①普

BroadcastReceiver广播接收者(二)——利用AndroidManifest.xml注册广播接收者

MainActivity如下: package cc.testbroadcasta; import android.os.Bundle; import android.app.Activity; import android.content.Intent; /** * Demo描述: * 利用AndroidManifest.xml注册广播接收者 */ public class MainActivity extends Activity { @Override protected void onC

Android编程四大组件之BroadcastReceiver(广播接收者)用法实例_Android

本文实例讲述了Android编程四大组件之BroadcastReceiver(广播接收者)用法.分享给大家供大家参考,具体如下: 这里介绍如何创建广播.如何发送一个无序广播和有序广播.以及监听短信以及监听呼出电话(当我们发短信和打电话,系统就会发一个广播,我们可以拦截此广播进行监听短信以及监听呼出电话). 定义广播接收者 1.定义类继承BroadcastReceiver,重写onReceive方法 2.当接收到匹配广播之后就会执行onReceive方法 3.清单文件中声明<receiver>,

BroadcastReceiver广播接收者(五)——onReceive()中的耗时任务以及短信窃听

SMSBroadcastReceiver如下: package cn.com; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import android.content.BroadcastReceive

BroadcastReceiver广播接收者(一)——利用代码注册广播接收者

MainActivity如下: package cc.testbroadcasta; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; /** * Demo描述: * 在代码中注册广播接收者 * 1 在onCreate()中注册广播接收者 * 2 在onDestroy()中取消注册广播接收者 */ pu

说说Android的广播(1) - 普通广播,有序广播和粘性广播

说说Android的广播 对于Activity的启动流程,我们已经有了几个版本的分析了.这里我们分析一个更容易一些的,四大组件中最简单的Broadcast Receiver. 关于Broadcast,有几点需要了解.首先是广播的类型,然后是广播的发送方法,最后是广播是如何被接收的.这三者相辅相承的,比如普通广播和有序广播只有在详细了解了广播的接收过程了之后,才能真正明白它的含义. 广播的类型:普通广播,有序广播和粘性广播 普通的广播是不在意顺序的,最简单的理解是同时可以收到这个广播.如果应用是动