相对于显式Intent(明确指出了目标组件名称的Intent),隐式Intent,没有明确指出目标组件名称。显式Intent直接用组件的名称定义目标组件,这种方式很直接。但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式Intent更多用于在应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。而隐式Intent恰恰相反,它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。在显式Intent消息中,决定目标组件的唯一要素就是组件名称,因此,如果Intent中已经明确定义了目标组件的名称,那么就完全不用再定义其他Intent内容。而对于隐式Intent则不同,由于没有明确的目标组件名称,所以必须由Android系统帮助应用程序寻找与Intent请求意图最匹配的组件。

隐式Intent指定一系列更为抽象的action和category等信息,然后交由系统去分析。通过<activity>标签下配置<intent-filter>的内容,可以制定当前活动能够相应的action和category。接上一篇文章,在AndroidManifest.xml中添加:

 <activity android:name=".secondActivity">

            <intent-filter>
<action android:name="com.example.myintent.ACTION_START"/>
<category android:name="android.intent.category.MY_CATEGORY"/>
</intent-filter> </activity>

activity

同时修改MainActivity中的代码:

 public class MainActivity extends Activity {

     private Button btn1;

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); btn1=(Button)findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//显式
// Intent intent=new Intent(MainActivity.this,secondActivity.class);
// startActivity(intent); //隐式
Intent intent=new Intent("com.example.myintent.ACTION_START");
intent.addCategory("android.intent.category.MY_CATEGORY");
startActivity(intent);
}
});
} }

onClick

只有action和category同时匹配才能相应,一个Intent只能有一个action,但却可以有多个category。当在<intet-filter>中没有添加category时,系统不会报错,将会使用默认的一个category。

最新文章

  1. hibernate注解CascadeType
  2. 消息中间件MetaQ高性能原因分析-转自阿里中间件
  3. 使用代理和block写一个alertView
  4. dblink嵌套场景下 查询出现:ORACLE ORA-00600错误的解决
  5. 一些sql二
  6. 跨域调用webapi web端跨域调用webapi
  7. Java面试汇总
  8. CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦
  9. go - 复合类型 array, slice, map
  10. IDC服务器的六大基础知识
  11. VScode插件以及配置
  12. Battle Zone 战争地带
  13. redis 删除大key集合的方法
  14. 每个Java程序员需要了解的8个Java开发工具
  15. mac下pycharm快捷键
  16. Java集合框架——容器的快速报错机制 fail-fast 是什么?
  17. [读书笔记]Linux命令行与shell编程读书笔记04 安装软件,编辑器注意事项
  18. IDEA运行tomcat8.5.35源代码
  19. font-face 跨域解决
  20. cron表达式增加一段时间变为新的表达式

热门文章

  1. Android-RC4的加密解密代码
  2. HDU-2700 Parity
  3. python 默认的系统编码 sys.setdefaultencoding
  4. python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出
  5. 开发神器之--Sublime Text
  6. 荷兰国旗问题 划分成3部分 leecode
  7. 洛谷1439 排列LCS问题
  8. JS中多个onload冲突解决办法
  9. Cocoa深入学习:NSOperationQueue、NSRunLoop和线程安全
  10. python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客