Android中的Intent(意圖)的使用,androidintent

來源:互聯網
上載者:User

Android中的Intent(意圖)的使用,androidintent
概述:

Intent(意圖)主要是解決Android應用的各項組件之間的通訊。Intent負責對應用中一次操作的動作、動作涉及資料、附加資料進行描述,Android則根據此Intent的描述,負責找到對應的組件,將 Intent傳遞給調用的組件,並完成組件的調用。因此,Intent在這裡起著一個媒體中介的作用,專門提供組件互相調用的相關資訊,實現調用者與被調用者之間的解耦。

分類:隱式意圖   

        不用指定要開啟的activity, 通過動作和資料的組合去尋找系統中, 能處理指定動作和資料的介面,因此該方法效率較低。
   應用情境:
        一個應用想被另一個應用開啟。
        一個應用想開啟另一個應用程式。

        開啟方法: 

// 開啟代碼Intent intent = new Intent();intent.setAction("com.test.rpcalc.CALC_RP");intent.setData(Uri.parse("calc://張三"));intent.addCategory("android.intent.category.DEFAULT");startActivity(intent);// 被開啟介面資訊清單檔的配置<intent-filter >    <action android:name="com.test.rpcalc.CALC_RP"/>    <data android:scheme="calc" />    <!-- 額外類別參數 -->    <category android:name="android.intent.category.DEFAULT"/></intent-filter>
顯式意圖

   指定(包名, 類名), 直接進行跳轉。 效率高。
   應用情境:
       應用內部的介面之間進行跳轉(安全)
       應用之間跳轉可以給Activity配置android:exported="true", 預設false
   開啟方法

方式一:Intent intent = new Intent(this, SelectNumberActivity.class);startActivity(intent);方式二:Intent intent = new Intent();intent.setClassName("com.test.smssenderapp", "com.test.smssenderapp.SelectNumberActivity");startActivity(intent);
Intent的資料傳遞 

   1.intent.setData(uri)  --  intent.getData();
     - 傳遞字串資料, 比較局限.
   2.intent.putExtra(name, value)
     - 8 大基礎資料型別 (Elementary Data Type)(byte,short,int,long;float,double;char;boolean), 及其數組。

     - String字串傳CharSequence
     - Serializable 序列化對象 (序列化到檔案) 介面
     - Parcelable 序列化對象 (郵包化到記憶體) 介面
     - Bundle 類似於map的資料集合。使用 putExtras()。

    Intent中傳遞對象的方法:

    一種是Bundle.putSerializable(Key,Object);

    另一種是Bundle.putParcelable(Key, Object);

    選擇序列化方法的原則:

    1)在使用記憶體的時候,Parcelable比Serializable效能高,所以推薦使用Parcelable。

    2)Serializable在序列化的時候會產生大量的臨時變數,從而引起頻繁的GC。

    3)Parcelable不能使用在要將資料存放區在磁碟上的情況,因為Parcelable不能很好的保證資料的持久性在外界有變化的情況下。儘管Serializable效率低點,但此時還是建議使用Serializable 。

 

參考博文連結:

   《Android中Intent中傳遞對象的方法》  http://www.oschina.net/code/snippet_1408868_39329

   《Android中Parcelable介面用法》http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html

       

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.