码迷,mamicode.com
首页 > 移动开发 > 详细

安卓Intent(隐式)

时间:2016-05-11 16:39:54      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

      相对于显式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中的代码:

技术分享
 1 public class MainActivity extends Activity {
 2     
 3     private Button btn1;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         
10         btn1=(Button)findViewById(R.id.button1);
11         btn1.setOnClickListener(new OnClickListener() {
12             
13             @Override
14             public void onClick(View arg0) {
15                 // TODO Auto-generated method stub
16                 //显式
17 //            Intent intent=new Intent(MainActivity.this,secondActivity.class);
18 //            startActivity(intent);
19                 
20                 //隐式
21                 Intent intent=new Intent("com.example.myintent.ACTION_START");
22                 intent.addCategory("android.intent.category.MY_CATEGORY");
23                 startActivity(intent);
24             }
25         });
26     }
27 
28     
29 }
onClick

 

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

 

安卓Intent(隐式)

标签:

原文地址:http://www.cnblogs.com/wynet/p/5482325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!