安卓Intent(隐式)
2024-08-28 15:49:40
相对于显式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。
最新文章
- hibernate注解CascadeType
- 消息中间件MetaQ高性能原因分析-转自阿里中间件
- 使用代理和block写一个alertView
- dblink嵌套场景下 查询出现:ORACLE ORA-00600错误的解决
- 一些sql二
- 跨域调用webapi web端跨域调用webapi
- Java面试汇总
- CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦
- go - 复合类型 array, slice, map
- IDC服务器的六大基础知识
- VScode插件以及配置
- Battle Zone 战争地带
- redis 删除大key集合的方法
- 每个Java程序员需要了解的8个Java开发工具
- mac下pycharm快捷键
- Java集合框架——容器的快速报错机制 fail-fast 是什么?
- [读书笔记]Linux命令行与shell编程读书笔记04 安装软件,编辑器注意事项
- IDEA运行tomcat8.5.35源代码
- font-face 跨域解决
- cron表达式增加一段时间变为新的表达式
热门文章
- Android-RC4的加密解密代码
- HDU-2700 Parity
- python 默认的系统编码 sys.setdefaultencoding
- python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出
- 开发神器之--Sublime Text
- 荷兰国旗问题 划分成3部分 leecode
- 洛谷1439 排列LCS问题
- JS中多个onload冲突解决办法
- Cocoa深入学习:NSOperationQueue、NSRunLoop和线程安全
- python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客