安卓Intent(隱式)

來源:互聯網
上載者:User

標籤:

      相對於顯式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             @Override14             public void onClick(View arg0) {15                 // TODO Auto-generated method stub16                 //顯式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(隱式)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.