_027_Android_ Intent 显式及隐式启动 Activity 的⽅式

转自https://www.cnblogs.com/itfenqing/p/6714985.html,感谢作者的无私分享。 

Android的Acitivity启动大致有两种方式:显式启动与隐式启动。下面分别介绍:

    A:显式启动

 下面用代码来解释什么是显式启动。

Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);

   B:隐式启动
    隐式启动不同之处在于我们并不需要像Intent(MainActivity.this, SecondActivity.class)这样传参数然后再Start另一个Activity.我们需要在intent添加过滤器intentfilter。

<activity  
   android:name="com.example.android.tst.SecondActivity"  
   android:label="@string/title_activity_main" >  
         <intent-filter>  
               <action android:name="com.example.android.tst.SecondActivity"/>  
               <category android:name="android.intent.category.DEFAULT" />  
         </intent-filter>  
</activity>


我们需要在启动另一个Activity的时候只需要如下方法就可以:
   

Intent intent=new Intent("com.example.android.tst.SecondActivity");
startActivity(intent);

转自https://www.cnblogs.com/itfenqing/p/6714985.html,感谢作者的无私分享。 

显式启动Activity和隐式启动Activity

1.显式启动
Intent intent = new Intent(this, class);
startActivity(intent);

2.隐式启动
AndroidManifest.xml中定义某个Activity的intent-fliter
<intent-filter>
<action android:name="com.example.activity.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activity.ACTION_START" />
</intent-filter>

Activity中
Intent intent = new Intent("com.example.activity.ACTION_START");
//android.intent.category.DEFAULT是一种默认的category,在startActivity时自动添加
intent.addCategory("com.example.activity.ACTION_START"); 
startActivity(intent);
隐式启动,在启动的时候是不明确的,需要匹配系统或AndroidManifest.xml中的intent-filter定义,只有action和category和data完全匹配时,才会启动.


隐式启动不仅可以启动自己的Activity,还可以启动其他的Activity,如打开网页
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

这儿首先指定了intent的action为Intent.ACTION_VIEW,这是android内置的打开网页动作,然后通过Uri.parse将一个网址解析为Uri对象,再调用Intent的setData将Uri对象传递进去.

猜你喜欢

转载自blog.csdn.net/poiuyppp/article/details/83472615