android 中Activity 五種不同的啟動方式

來源:互聯網
上載者:User

大家都知道合理的利用系統資源,減少系統不被佔用太多,是每個開發必須思考的問題,眾所周知 應用程式是一系列有著特定功能的Activities組成,它們有自己的屬性和行為。使用者可以在Home中通過啟動捷徑將當前進程引入特定的Activites,或者可以在其它程式進程中啟動外部的Activities。有的人會問,瞭解程式的啟動方式有用嗎?當然,瞭解不同的啟動方式才能更好的根據需要設計Activities。

下邊將介紹五種與其相關的設計模式:

通過Home中的捷徑表徵圖(或者下拉的Application
Launcher)啟動:這是最常見的啟動方式,而且代表程式具備獨立的運行條件。通常會在Manifest中指定某個Activity的android.intent.category屬性為Launcher。
在其它程式中間接啟動:這體現了Activities在Android中一個非常重要的特性“重用性”,例如:使用者在當前的操作過程中希望將特定的資訊通過Email的方式發送給好友,一般情況下會利用系統預設的處理郵件Activity響應這項請求,如果恰巧此時系統中存在其它類似intent-filter的Activites,那麼將會提供給使用者一個可選擇的對話方塊,使用者可以根據需要啟動恰當的應用程式,這個過程可以看作為間接的啟動Applications。或者在預知當前系統配置的情況下,直接應用(startActivity() 或者startActivityForResult())啟動特定的Activity。
StartActivity():
通過這種方式啟動應用程式可以看作為獨立運行於系統中,啟動它的parent無需得到其所啟動並執行傳回值,更具體的講是一個Standalone的應用程式啟動了另一個有著同樣Standalone特性的程式。
StartActivityForResult():
通過方法的命名可以很直觀的看到,其最大的作用是當啟動了某個Activity後,parent依然關聯著當前進程所處理的Activity。當操作完成後,會有特定的傳回值作為Parent響應某些Events的結果。(Androidres.com)
強製程序僅以被其它程式調用的方式啟動(沒有直接的啟動入口):在系統中有相當一部分的應用程式需要有嚴格的運行條件(Context),其無法以Stand
alone的方式獨立運行於進程中。具備這種特性的Application大體上分為兩種:其一,帶有特定傳回值的應用程式。parent出於當前操作需要,通過啟動其它Application來獲得某些特定的資源。例如:IME或者檔案資源選取器等。另外一種情況,經常被調用來修改系統設定或者提供單一有特定目的的操作。這樣的Application無需在Home中提供快捷啟動方式,其僅僅被其它某些程式在特定的需求下來滿足需求。例如:更換系統鈴音程式。
在一個Application中包含有多個Mian
Activities,並且各自具備有獨立的啟動入口:很多開發人員都習慣於預設的開發配置,一個Application僅僅包含一個獨立的應用。然後在特定的需求下可以打破這個限定,系統允許開發人員將多個Main
Activities應用捆綁在同一個Application中,而且這些Main
Activities可以在Home中有獨立的啟動捷徑。然而有非常重要的一點需要特彆強調,這種方式並不提倡在任何情況下採用,一般當兩個應用程式需要調用相同的系統資源或者包含有大部分相同功能的應用時,才可以考慮採用這種方式來簡化使用者的安裝過程(另外一個角度來看,起到最佳化系統資源的目的)。技術上需要注意為不同的Main
Activity定義不同的Task
affinity。例如:Camera和Camcorder,它們共同使用網路攝影機,而且同樣採用Gallery作為資源管理員,他們的Task
Affinity分別設定為:”com.android.camera” 和 “com.android.videocamera”。
以Widget的方式體現Activity的應用價值:嚴格意義上來看,這的確算得上是一種啟動方式,某些Application將部分常用的功能以Widget的形式在Home或者其它Application中被引用(單擊主屏選擇,相應的應用程式,系統的SlidingDrawer,都可以體現)。
以上是Android系統中在不同的需求下來啟動Activity的方式,開發人員可以根據特定的需求為Application設定一種恰當的啟動方式。

 

相關文章

聯繫我們

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