android之IntentFilter的用法_Intent.ACTION_TIME_TICK在manifest.xml不起作用

在模仿一个天气预报的widget时候,用到了IntentFilter,感觉在manifest.xml注册的receiver跟用代码写registerReceiver()的效果应该是相同的,于是想证明一下,就写了如下一段程序:MainActivity:public class MainActivity extends Activity { public static final i

大家好,又见面了,我是全栈君。

在模仿一个天气预报的widget时候,用到了IntentFilter,感觉在manifest.xml注册的receiver跟用代码写registerReceiver()的效果应该是相同的,于是想证明一下,就写了如下一段程序:

MainActivity:

public class MainActivity extends Activity {
	
	public static final int UPDATE = 000;
	TextView xml;
	TextView java;
	int count = 0;
	Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			switch (msg.what) {
			case UPDATE:
				count ++;
				xml.setText(count);
				break;

			default:
				break;
			}
		}
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		IntentFilter javaFilter = new IntentFilter();
		javaFilter.addAction("android.intent.action.TIME_TICK");
		registerReceiver(receiver, javaFilter);
		xml = (TextView) findViewById(R.id.xml);
		java = (TextView) findViewById(R.id.java);
	}
	
	BroadcastReceiver receiver = new BroadcastReceiver() {
		
		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			Date date = new Date();
			SimpleDateFormat dateFormat = new SimpleDateFormat("HHmm");
			java.setText(dateFormat.format(date));
		}
	};
	
	protected void onDestroy() {
		unregisterReceiver(receiver);
	};
	
	class Accept extends BroadcastReceiver {

		@Override
		public void onReceive(Context arg0, Intent arg1) {
			// TODO Auto-generated method stub
			Message message = handler.obtainMessage();
			message.what = UPDATE;
			handler.sendMessage(message);
		}

	}
}

在manifest文件中注册如下:

<receiver android:name="jason.recevertext.Accept">
            <intent-filter >
                <action android:name="android.intent.action.TIME_TICK"/>
            </intent-filter>
        </receiver>

布局文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/xml"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <TextView
        android:id="@+id/java"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</LinearLayout>

总体说来很简单,就是通过两种方式注册了IntentFilter,然后接收到更新的intent之后更新主界面上的两个textview

结果java代码注册的IntentFilter很正常,xml注册的IntentFilter没有任何作用.

事实证明我的想法是错的,经过查询资料,发现:

在众多的Intent的action动作中,Intent.ACTION_TIME_TICK是比较特殊的一个,根据SDK描述:

Broadcast Action: The current time has changed. Sent every minute. You can not receive this through components declared in manifests, only by exlicitly registering for it withContext.registerReceiver()

意思是说这个广播动作是以每分钟一次的形式发送。但你不能通过在manifest.xml里注册的方式接收到这个广播,只能在代码里通过registerReceiver()方法注册。

 

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539/article/details/10815787(转载请说明出处)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121401.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 游戏建模自学真的能学出来吗?

    游戏建模自学真的能学出来吗?游戏建模自学肯定是能学出来的,但这有几个先决条件:1.高度的自律性2.时间,你得有一定的空闲时间用于学习和练习,全日制的同学们每天从早上8/9点钟一直到6点过7点都在学习、做作品,可能回家之后还在练习,一天花在建模上的时间比8个小时只多不少,所以你肯定不能指望着每天一两个小时的练习时间就能突飞猛进成为大佬(除非你有基础且天赋异禀,这个另当别论)3.有人指导帮你找出你的问题并给出改正方案最后,不可否认确实有部分同学可以通过自学入行,也确实会有很多人出于各种各样的原因觉得培训班不靠谱想自学,

    2022年5月15日
    43
  • vue-property-decorator的简单介绍,一看就会

    vue-property-decorator的简单介绍,一看就会identifier!如果编译器不能够去除null或undefined,你可以使用类型断言手动去除。语法是添加!后缀:identifier!从identifier的类型里去除了null和undefined:functionfixed(name:string|null):string{functionpostfix(epithet:string){…

    2022年10月23日
    0
  • 提取pfx证书密钥对

    提取pfx证书密钥对两个测试证书test.pfx和test.cer.其中pfx证书包含RSA的公钥和密钥;cer证书用于提取pfx证书中密钥时允许当前电脑进行合法操作提取步骤如下:点击test.cer,安装cer证书2.从pfx提取密钥信息,并转换为key格式(pfx使用pkcs12模式补足)(1)提取密钥对opensslpkcs12-intest.pfx-nocerts-nodes-outtest.key//如果pfx证书已加密,会提示输入密码。如果cer证书没有安装

    2022年5月31日
    54
  • 企业微信API使用基本教程[通俗易懂]

    企业微信API使用基本教程[通俗易懂]在企业微信创建自建应用登录企业微信后台,在“应用管理>自建”中点击“创建应用”,填写应用信息创建。API配置表参数值获取1、corpid:企业ID。在企业微信后台的“我的企业>企业信息”中获取。2、corpsecret:应用凭证密匙。在自建应用详情中获取。如果要使用通讯录相关API则corpsecret在“管理工具>通讯录同步”中获取。3、AesKey及token:加密的AESKEY和消息token。如果是接收外部联系人变更回调等事件信息,则在“自建应用详情>

    2022年10月2日
    0
  • Java实现完美洗牌算法

    1问题描述有一个长度为2n的数组{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序后变成{a1,b1,a2,b2,a3,b3,…,an,bn},请考虑有没有时间复杂度为O(n)而空间复杂度为O(1)的解法。2解决方案2.1位置置换算法下面算法的时间复杂度为O(n),空间复杂度为O(n)。packagecom.liuzhen.practice;publiccl…

    2022年4月7日
    57
  • iOS插件列表

    iOS插件列表

    2022年2月22日
    126

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号