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:两个界面布局简单得令人发指,所以不再贴出。

时间: 2024-11-08 04:15:03

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

普通广播接收者和有序广播接收者

普通广播接收者和有序广播接收者 接收者的操作和普通情况下一样 在有序情况下,优先级不相同的情况下先执行优先级高的,优先级相同的情况下先执行先在Manifest中注册的. 无序的话顺序是任意的.

BroadcastReceiver广播接收者(四)——本地广播LocalBroadcastManager以及在onReceive()中弹出Dialog

MainActivity如下: package cc.cv; import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import an

Android中广播接收者BroadcastReceiver详解

1. 接收系统的广播步骤 (1)  新建一个类继承BroadcastReceiver 以监听sd卡状态的广播接收者为例 1 public class SdCardBroadcastReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 String action = intent.getAction(); 6 if("android

广播接收者

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

Android入门:广播发送者与广播接收者

参考: Android入门:广播发送者与广播接收者 - xiazdong - CSDN博客http://blog.csdn.net/xiazdong/article/details/7768807 一.广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据:

【安卓笔记】作为内部类的广播接收者

在 [全面解析service组件] 一文中我们提到了采用广播接收者(BroadcastReceiver)使service与activity进行通信.在该例子中我们在service子 类中定义了一个自定义的广播接收者,该广播接收者监听activity发出的特定的广播,并从而触发onReceive方法,我们在此方法中间接调用 service类的方法,从而实现了service与activity间的通信.例子中的广播接收者是采用动态的方式注册的(即使用 registerReceiver和unregist

广播接收者(Broadcast Receiver)

独立寒秋,湘江北去,橘子洲头. -–毛泽东<沁园春·长沙> 广播 广播类型 有序广播 无序广播 特殊的广播接收者 注册广播接收者的两种方式 系统广播示例 接收系统发送的广播 示例-短信到来 自定义无序广播示例 创建广播 接收广播方式静态注册 接收广播方式代码注册 自定义有序广播示例 发送有序广播 接收有序广播 有序广播结果 特殊的广播接收者-锁屏等等 广播 听广播要有:电台 收音机 音乐广播 Android系统内部已经定义好了电台 ,也已经定义好了一些广播事件 比如外拨电话 短信到来 SD卡状

广播发送者/广播接收者

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

Android 广播接收者 BroadcastReceiver

Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通信. 从实现原理看上,Andro