2016-02-01 16:38:40 1017瀏覽
本篇文章將持續(xù)上一篇文尾提到的android培訓中android開發(fā)應用程序的運行機制這一問題。
Android系統(tǒng)使用了Intent這個特殊類,來實現(xiàn)應用程序顯示界面之間的切換。相對于Intent是一個有效的動作請求,與之產(chǎn)生關系的另一個類為意圖過濾器(intentFilter)。IntentFilter是用于描述一個Activity(或者其他IntentReeeiver)能夠接受并響應哪些類型的Intent。
假設android開發(fā)者需要一個顯示電話簿甫聯(lián)系人內(nèi)容的Activity,則他就要需要聲明一個IntentFilter。這個IntentFilter需要知道怎么去處理查看(Ⅷw)動作以及其含有的聯(lián)系人URI。開發(fā)者可以在AndroidManifest.xml中定義IntentFilter。通過解析各種類型Intent,應用程序從一個畫面切換到另一個畫面就變得很簡單。當切換當前組件時,Activity將會調(diào)用startAetivity(IntentmyIntent)方法。然后,Android系統(tǒng)會在所有安裝的應用程序所定義的IntentFilter中查找,直到找到最佳匹配的Intent并調(diào)用其對應的Activity。剛剛執(zhí)行的Activity就會接收到myIntent的通知,然后開始運行。當StartAetivityO方法被調(diào)用時,將觸發(fā)解析myIntent的動作。這樣的運行機制存在兩個關鍵優(yōu)點:
·Activities能夠被重復利用。Android系統(tǒng)可以從其他組件中以Intent的形式調(diào)用它們。
·Activities可以在任何時候被一個具有相同IntentFilter的Activity取代。
當開發(fā)者希望應用程序能夠?qū)σ恍┩獠渴录龀鲰憫?,例如當接收短信時、電話呼入時、數(shù)據(jù)網(wǎng)絡可用時或者到了晚上時,則可以使用一個Intent Receiver對象實例來完成。雖然IntentReceiver在其關注的事件發(fā)生時,會使用Notification Manager來通知用戶,但它并不能生成一個用戶可以見到的顯示界面UI。Intent Receiver需要開發(fā)者在AndroidManifest.xml中注冊,同時也可以在代碼中使用Co_atext.registerReeeiver0方法進行注冊。當一個Intent Receiver被觸發(fā)時,開發(fā)者并不需要自己請求Intent Receiver調(diào)用應用,Android系統(tǒng)會在需要的時候自動啟動應用程序。另外,應用程序還可以通過使用Context.broadeastintentO將它們自己的Intent Receiver廣播給其他應用程序。
扣丁學堂作為國內(nèi)口碑最好的Android培訓機構(gòu),開設免費Android開發(fā)視頻課程,課程內(nèi)容從android開發(fā)入門環(huán)境搭建到android開發(fā)實戰(zhàn)項目訓練,課程最基礎內(nèi)容細化java初級語言,0基礎學android開發(fā)也行,如果你對android開發(fā)也有興趣,歡迎前來扣丁官網(wǎng)閱覽咨詢。