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)
上一篇 2022年3月10日 下午4:00
下一篇 2022年3月10日 下午5:00


相关推荐

  • route命令linux详解,route命令详解与使用实例

    route命令linux详解,route命令详解与使用实例route命令用于在本地IP路由表中显示和修改条目。使用不带参数的ROUTE可以显示帮助。语法:route[-f][-p][command[destination][masknetmask][gateway][metric][ifinterface]参数说明:-f清除所有不是主路由(子网掩码为255.255.255.255的路由)、环回网络路由(目标为127.0.0.0,子网掩…

    2022年7月18日
    23
  • c语言数组中插入新数据

    c语言数组中插入新数据数组插入数据 在数组的应用中,我们有时会向数组中插入一个数据,而且不打破原来的排序规律,其实数组中的插入数据,就是数据的比较和移动;如果想要弄懂这些方法最好拿笔比划以下,或者debug一下,了解其中的思想,光看理解的不深;方法一:输入一个数据x,将数组中的数据与x逐一比较,如果大于x,记录下数据的下标,然后此数据下标和其后的数据的下标都加一,相当于都向后挪一位,然后将x赋值给数组的那…

    2022年7月11日
    21
  • WinZip Pro 9 for Mac(专业zip压缩解压工具)

    WinZip Pro 9 for Mac(专业zip压缩解压工具)WinzipMac是Mac上的老牌解压缩软件,老字号的压缩软件当然更稳定更靠谱。WinzipMac注册版率先支持ribbon界面,支持ZIP、CAB、TAR、GZIP、MIME,以及更多格式的压缩文件。您可以压缩并加密文件更快捷,更安全。安装:WinZipPro9forMac(专业zip压缩解压工具)zip压缩工具Mac版功能亮点压缩文件以节省空间并发送更快的电子邮件压缩文件可节省宝贵的存储空间,减少文件上载/下载时间,并使您可以发送更快,更高效的电子邮件。-新!WinZ

    2026年4月13日
    6
  • 看完了aspnetmvc nerdinner项目

    看完了aspnetmvc nerdinner项目这几天一直在看aspnetmvc-nerdinner这本书中的Nerdinner代码编写的全过程。其实觉得用最原始的办法:动手敲代码带给我们的好处比单纯的看然后Copy代码再运行要好的多,最起码加深了我们的记忆。前段时间看了ASP.NET网站上关于ASP.NETMVC编程的培训文章,觉得MVC挺强大的,然后就试着自己做了一个小项目,可是在做的过程中,很多东西确实见多人家怎么做,也知道大概…

    2026年4月18日
    5
  • 草根程序员转型做项目管理走过的点点滴滴之_华为裁员感想

    草根程序员转型做项目管理走过的点点滴滴之_华为裁员感想自己一直假想还停留在29岁那个黄金年龄,仿佛明天就要30岁(老话里而立的年纪),因此总感觉要拼命的工作,拼命的学习好让明天立的更稳固一些。缘起百度了一把华为裁员的相关报道,又看了几篇别人写的华为裁员的理解已经对中国it行业的痛批文章,把我一下子拉回了现实,85年出生在农村的自己到现在恰好也是三十二几岁的阶段,发现也没啥立不立的,还是那个拼命三郎的状态,顿时有些迷惑与感伤。

    2022年7月17日
    21
  • redis 的两种持久化方式及原理[通俗易懂]

    redis 的两种持久化方式及原理[通俗易懂]redis 的两种持久化方式及原理

    2022年4月23日
    57

发表回复

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

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