Android 笔记 - 基础之Intent
最近事情太多,没有继续学习Android编程,不过前天从机锋下了个植物大战僵尸,发现老有广告弹出,想知道原理。于是
反编译androidManifext.xml 文件,发现receiver之类的声明,于是继续研究。 明白了一下原理。
可以在代码文件中声明一个receiver,也可以在manifest中声明一个,前者中的receiver只有在该activity launch起来以后才会监听其所感兴趣的文件,而如果在androidManifext.xml中声明的话,就不受限制,随时可以监听感兴趣的事件。
receiver有个好处就是不需要让程序一直运行在后台,只要声明的监听的intent-filter,符合条件系统会自动调用相应的函数。
然后回想Hellowworld中的 androidManifext.xml的activity也有intent-filter,似乎明白了些东西。Intent是意图,可以被别的程序调用。如果满足条件,系统就会自动找到该activity来执行。intent可以显式或者隐式,显式就在直接指定包和类名,隐式就需要使用过滤条件来匹配。
intent包含对应的action信息。系统有些标准的action。可以参考andorid 开发网站reference/android/content/Intent.html。系统会根据此来判断哪些activity可以执行该action,然后如果出现多个,就会有个下拉框选择。以此来实现activity的松耦合。原来的activity 不需要知道用哪个activity会执行。
当然intent还可以实现不同的程序或者同个程序不同的activity的数据交换。
1、通过Context.startActivity() orActivity.startActivityForResult() 启动一个Activity;
2、通过 Context.startService() 启动一个服务,或者通过Context.bindService() 和后台服务交互;
3、通过广播方法(比如 Context.sendBroadcast(),Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()) 发给broadcast receivers。