Android activity-alias 的使用
今天,簡單講講android如何使用
<activity-alias>。
其實很簡單,就是讓一個activity跳轉到另一個目標activity。但是之前沒有注意,所以這里記錄一下。
【Android】activity-alias的使用
activity-alias是android里為了重復使用Activity而設計的。
當在Activity的onCreate()方法里,執行getIntent().getComponent().getClassName();得到的可能不是這個Activity的名字,有可能是別名的名字,例如:在AndroidMenifest.xml有如下配置:
<activity android:name=".TestAndroid" android:icon="@drawable/ic_menu_mark"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
這個應用會在桌面上建兩個進入點,即建兩個可以進入TestAndroid這個Activity的快捷圖標。這時getIntent().getComponent().getClassName() 得到的名字就不一樣,一個是com.test.TestAndroid,一個是com.test.TestAndroidAlias。
這個有什么作用呢?可以解決下面的問題:
應用開發中有這樣一個需求:需要改變HomeActivity (launcher 的入口) 的名稱為FirstActivity,這么改一下很簡單,那就改吧,按理說也沒有什么大礙。可是在App 發布后在某些手機上版本升級后,點擊桌面icon 竟然無法啟動App直接崩潰。
后來追述Log才搞清楚原因:某些手機安裝的launcher 會cache App 的歷史信息,例如HomeActivity的名稱等。所以當App升級到新版本后,點擊桌面icon 仍然會啟動老的HomeActivity,然而新App 的HomeActivity已經更改名稱FirstActivity,因此無法啟動直接崩潰。(如果用戶關機重新啟動,點擊桌面icon?App是能夠正常啟動的,因為launcher cache 的信息已經清除了)
2. 解決辦法
用<activity-alias>重定向HomeActivity
<activity android:name="com.example.FirstActivity" android:exported="true"> </activity> <!-- Solution for upgrading issue --> <activity-alias android:name="com.example.HomeActivity" android:targetActivity="com.example.FirstActivity" android:exported="true" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias>
3. 注意
(1)在AndroidManifest.xml 文件中,新的 <activity> 必須放在 <activity-alias>之前定義,否則重定向可能會失敗.
(2)如果你的App引用了其它工程,請務必將?<activity-alias>的定義聲明放在App的AndroidManifest.xml 文件中,不要放在被引用的工程的AndroidManifest.xml 文件中,否則用Eclipse "project -> Run As -> Android Application" 無法啟動你的App.
4. 驗證
?? 手動安裝,手動點擊icon是可以正常啟動,修改完成!
Android <activity-alias> 的使用就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的Android activity-alias 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android ColorDrawabl
- 下一篇: android wps表格如何设置边框颜