1. 程式人生 > >_027_Android_ Intent 顯式及隱式啟動 Activity 的⽅式

_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物件傳遞進去.