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


一、action的分类

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

1、Standard Activity Actions

  • ACTION_MAIN
  • ACTION_VIEW
  • ACTION_ATTACH_DATA
  • ACTION_EDIT
  • ACTION_PICK
  • ACTION_CHOOSER
  • ACTION_GET_CONTENT
  • ACTION_DIAL
  • ACTION_CALL
  • ACTION_SEND
  • ACTION_SENDTO
  • ACTION_ANSWER
  • ACTION_INSERT
  • ACTION_DELETE
  • ACTION_RUN
  • ACTION_SYNC
  • ACTION_PICK_ACTIVITY
  • ACTION_SEARCH
  • ACTION_WEB_SEARCH
  • ACTION_FACTORY_TEST

2、Standard Broadcast Actions

  • ACTION_TIME_TICK
  • ACTION_TIME_CHANGED
  • ACTION_TIMEZONE_CHANGED
  • ACTION_BOOT_COMPLETED
  • ACTION_PACKAGE_ADDED
  • ACTION_PACKAGE_CHANGED
  • ACTION_PACKAGE_REMOVED
  • ACTION_PACKAGE_RESTARTED
  • ACTION_PACKAGE_DATA_CLEARED
  • ACTION_UID_REMOVED
  • ACTION_BATTERY_CHANGED
  • ACTION_POWER_CONNECTED
  • ACTION_POWER_DISCONNECTED
  • ACTION_SHUTDOWN
参考地址: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;@Overridepublic 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在不同的网络环境、锁屏环境下的对比。



更多相关文章

  1. Android 横竖屏幕
  2. Android 屏幕常亮
  3. Smail反汇编文件语句说明
  4. Android屏幕横屏竖屏设置技巧
  5. APIDEMO ACTIVITY 屏幕在出现软键盘情况下自适应大小
  6. Android Screen Monitor抓取真机屏幕
  7. android锁屏唤醒并解锁屏幕
  8. Android屏幕自适应详解
  9. android View的快照与屏幕的截屏

随机推荐

  1. 坚果云亿方云哪个更好用?
  2. redis-cluster集群总结
  3. 业务数据分析
  4. pyinstaller打包总结
  5. aipai服务架构
  6. 量化交易
  7. 关于分库分表后的数据统计异构方案
  8. 已安装nginx动态添加模块
  9. ce内存寻址基址
  10. h5图片展示和ajax上传