android Standard Broadcast Actions 的对比和锁屏前后的测试

本文列举了android 标准action,并针对broadcast action 做了几个对比和测试。


一、action的分类

android 有一些标准的 action,包括:

1、Standard Activity Actions

2、Standard Broadcast Actions

参考地址:http://developer.android.com/reference/android/content/Intent.html


二、对比 android.intent.action.SIG_STR 与 android.intent.action.TIME_TICK

1、简介


A、android.intent.action.SIG_STR
电话的信号强度已经改变的action


B、android.intent.action.TIME_TICK

以分钟为单位,每分钟触发一次广播


2、设置


A、在MainActivity的 onCreate()方法中,设置 TIME_TICK

IntentFilter timeTickFilter = new IntentFilter();  

timeTickFilter.addAction("android.intent.action.TIME_TICK");  

registerReceiver(new BootBroadcastReceiver(), timeTickFilter); 


B、在AndroidManifest.xml中设置,SIG_STR

 <receiver android:name="com.xxx.xxx.BootBroadcastReceiver" >
       <intent-filter>
                <action android:name="android.intent.action.SIG_STR" />
        </intent-filter>
  </receiver>


3、BootBroadcastReceiver

 
public class BootBroadcastReceiver extends BroadcastReceiver {

	private int counts = 0;

	@Override
	public void onReceive(Context context, Intent intent) {

		String action = intent.getAction();

		System.out.println("**** === --- " + action);
		if (counts < 5) {
			System.out.println("**** === --- " + counts);
			counts++;
		}
	}
}
 

4、对比

在关闭屏幕的时候,SIG_STR 广播几乎没有,只有在很久一段时间偶尔会出现一次;

在关闭屏幕的时候,TIME_TICK 广播一直都有,每一分钟广播一次。


在屏幕打开的时候,SIG_STR 广播很频繁;

在屏幕打开的时候,TIME_TICK 广播一直都有,每一分钟广播一次。


在接收 SIG_STR 广播的时候,counts 始终是 0;

在接收 TIME_TICK的时候,counts 在增加到5前,打印语句;增加到5后就不在出现打印语句。


总结:

SIG_STR 受到屏幕关闭的影响,在开屏的情况下一分钟数次触发广播,关闭屏幕情况下几乎没有广播,每次接收器都会重新构建一个新的实例,所以每次counts的值都是零。

TIME_TICK不受到屏幕关闭的影响,任何情况下,每分钟触发一次。接收器一次生成后始终使用,接收器的成员变量可以变化计数。


今天先对比到这里,之后再增加其他的action在不同的网络环境、锁屏环境下的对比。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值