看了傳智播客的視頻(50+個),對安卓剛剛有了一定的瞭解。
現在正在看mars的視頻教程,算是複習一下。希望跟我有同樣夢想的朋友,大家一起加油!
一個Intent對象包含了一組信息:
1.Component name
記錄Intent對象要啓動的哪個組件,可以是Activity,也可以是Service,也可以是BroadcastReceiver
2.Action
指定組件要做哪些動作
比如官方文檔就設置了一些Action常量,ACTION_CALL, ACTION_MAIN, ACTION_BATTERY_LOW等等
3.Data
一個activity向另外的Activity傳輸的信息(URL和MIME類型)
比如action是ACTION_CALL,那麼data就應當以tel:開頭,後面加上撥打的號碼
setData()方法:只用來指定data的URI
setType()方法:只用來指定data的MIME類型
如果又要設置URI又要指定MIME,不能去依次調用上面的方法,需要用setDataAndType()
4.Category
指定要啓動的組件的類型,可以通過category或者action,根據AndroidManifest.xml中各個Activity定義的intent-filter,來自動查找,啓動隱式意圖(不用指定組件的class)
5.Extras
額外的信息,是一些鍵值對。
例如:
Intent intent=new Intent("......");
intent.putExtra("name","xiaojing");
startActivity(intent);
這樣在另一個Activity中,這樣就能通過intent對象,來得到name這個屬性值:
Intent intent=getIntent();
String name=intent.getStringExtra("name");
還有一種在Intent對象中存入額外信息的方法是:通過Intent中的Bundle對象
Bundle bundle=intent.getBundleExtra();
bundle.putString("name","xiaojing");
6.Flags
關於intent的flag問題。發現一篇博客,解釋的挺好的,感謝原作者的分享
出處:http://www.cnblogs.com/mybkn/
android:intent flags
一、Activity和Task(棧)的關係
Task就像一個容器,而Activity就相當與填充這個容器的東西,第一個東西(Activity)則會處於最下面,最後添加的東西(Activity)則會在最低端。從Task中取出東西(Activity)則是從最頂端取出,也就是說最先取出的是最後添加的東西(Activity),一次類推,最後取出的是第一次添加的Activity,而Activity在Task中的順序是可以控制的,那則在Activity跳轉時用到Intent Flag
二、界面跳轉和服務的啓動都會用到Intent,現在介紹Intent Flag是關於Activity的跳轉
Intent intent = new Intent(this,xxx.class);
//如果activity在task存在,拿到最頂端,不會啓動新的Activity
intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
//如果activity在task存在,將Activity之上的所有Activity結束掉
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//默認的跳轉類型,將Activity放到一個新的Task中
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//如果Activity已經運行到了Task,再次跳轉不會在運行這個Activity
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
使用Intent發送消息
Uri uri=Uri.parse("smsto://13916052547");
Intent intent=new Intent(Intent.ACTION_SENDTO,uri);
intent.putExtra("sms_body","SMS content:Hello");
startActivity(intent);
//效果是,會開啓短信發送的應用頁面,並自動填好了短信接收方的號碼和短信正文的內容
//所以intent對象能訪問不同App的Activity