Android項目為一個apk設定多個ICON表徵圖和執行入口

來源:互聯網
上載者:User

Android開發中,一個工程對應一個AndroidManifest.xml檔案,這個檔案中包含有該項目的一些設定,如許可權、SDk版Activity、Service資訊等。一般而言,這個檔案中會有且僅有一個application節點,這個節點表示這是一個應用程式,不管它下面還有多少子節點如Activity、Service等等。形象的說,就是這個項目產生的apk安裝到Android裝置後,應用程式列表中會出現一個ICON,這個ICON就是這個程式的執行入口了。

但是,某些情況下,我們需要為我們的apk設定多個執行入口,也就是安裝後在應用程式列表中出現多個ICON表徵圖,各個ICON是APP不同模組的進入點,並且各個模組運行在不同的進程中。

可能這種需求很少見,但還是有一個現實的例子:系統中的連絡人和電話這兩個程式。表面看來這是兩個獨立的應用程式,但實際上它們只是一個應用程式的兩個執行入口而已,點擊連絡人表徵圖就會進入連絡人介面,點擊電話表徵圖就會進入撥號介面,這都是通過設定該項目下Activity的屬性來實現的。

Activity有一個重要的屬性process,這個屬性是指定Activity運行時所在的進程。沒有指定此屬性的話,所有程式組件運行在應用程式預設的進程中,這個進程名跟應用程式的包名一致。中所有組建元素的process屬效能夠為該組件設定一個新的預設值。但是任何組件都可以覆蓋這個預設值,允許你將你的程式放在多進程中運行。如果這個屬性被分配的名字以:開頭, 當這個activity運行時, 一個新的專屬於這個程式的進程將會被建立。

以下面的代碼為例,項目中有兩個Activity,其中一個採用預設屬性,另一個為其指定process屬性以及新的ICON,這樣該項目安裝到裝置上之後可以發現多了兩個應用程式圖示,一個是應用程式預設的表徵圖,點擊後進入HelloWorldActivity;另一個是手動指定的ICON,點擊後進入NextPageActivity。這時使用adb shell查看進程可以發現,兩個Activity是運行在不同的進程中的。

AndroidManifest.xml的主要內容如下:

<activity android:name=".HelloWorldActivity"          android:label="@string/app_name"          android:process=":process.main">         <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />         </intent-filter></activity> <activity android:name="cn.ian.NextPageActivity"  android:label="@string/nextpage"  android:process=":process.sub"  android:icon="@drawable/icon1"  android:launchMode ="singleInstance"> <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />         </intent-filter></activity>

通過上面的方式,為App的各個組件指定process和icon屬性,便能夠達到類似於一個apk中打包多個程式(模組)的目的。

ps:要特別注意,為Activity指定process屬性後,還必須為其指定launchMode為singleInstance,這樣才有效。

相關文章

聯繫我們

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