Intent:
1.Intent用來啓動系統組件(Activity,Service,BroadcastReceiver)
2.Intent的屬性
Component屬性:接受一個ComponentName對象,創建一個ComponentName對象需要指定包名和類名,構造函數如下:
ComponentName(String pkg, String cls)
ComponentName(Context pkg, String cls)
ComponentName(Context pkg, Class<?> cls)
即需要包名+類名
Action屬性:代表該Intent所要完成的一個抽象動作,具體由哪個組件完成是不知道的,取決於組件的<intent-filter/>配置,只要組件的<intent-filter/>包含該動作,組件就有可能被啓動(一個Intent最多包含一個Action屬性)
Category屬性:爲Action屬性增加額外的信息(一個Intent可以包含多個Category屬性)
Data屬性:爲Action屬性提供操作的數據,接受一個Uri對象,分爲類型部分和數據部分 tel:12345 一旦同時指定Action、Data屬性,則會啓動特定應用成語並對指定數據執行相應操作
Type屬性:用於指定Data屬性所指定的數據的類型或MIME類型(一般在沒設置Data屬性時使用,有Data屬性則可從Data屬性獲得數據類型)
Extra屬性:用於在多個Action間進行數據交換,是一個Bundle對象(Bundle對象是一個Map對象)
Bundle:
Bundle對象是一個Map對象,存儲鍵值對(key-value)
1.傳遞數據:
Bundle提供了各種putX(String key, X value)和getX(String key) getX(String key, X defaultValue)方法,可以是boolean,int,long,float,double,String與它們對應的數組putXArray(String key, X[] value)和getXArray(String key)
2.傳遞Serializable類型的對象:
直接Implement Serializable接口,即可實現序列化,較慢,Bundle提供putSerializable(String key, Serializable value)和getSerializable(String key)方法
3.傳遞Parcelable類型對象:
同樣是實現數據的序列化,是android自定義接口,較快,下次詳細研究,Bundle提供putParcelable(String key, Parcelable value),putParcelableArray(String key, Parcelable[] value),putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)和getParcelable(String key),getParcelableArray(String key),getParcelableArrayList(String key)方法