編輯:關於android開發
Activity之間的跳轉,或者說加載一個新的Activity,一般對於開發者來說,都不是一個太難的問題。直到後來隨著不斷的深入,才發現原來Activity的加載還分為四種不同加載模式。靈活的使用合適的加載模式,可以避免產生大量的重復的Activity,從而優化性能,減少系統資源消耗。
四種加載模式具體為:
standard: 標准模式,一調用startActivity()方法就會產生一個新的實例。
singleTop: 檢查是否已經存在了一個實例位於Activity Stack的頂部,如果存在就不產生新的實例,反之則調用Activity的newInstance()方法產生一個新實例。
singleTask: 在一個新的Task中產生這個實例,以後每次調用都會使用此實例,而避免產生新的實例。
singleInstance: 這個基本上跟singleTask一樣,只是有一點不同,那就是在這個模式下的Activity實例所處的Task中,只能有這一個Activity實例,而不能有其他的實例。
這些啟動模式可以Android清單文件AndroidManifest.xml中,通過<activity>中的launchMode屬性進行設置,如:
AndroidManifest.xml
<activity android:name="MainActivity" android:launchMode="singleTop">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Java Code
Intent intent = new Intent(SrcActivity.this, TargetActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
四種加載模式的區別如下:
1.所屬Task的區別:
一般情況下,,“standard”和”singleTop”兩種加載模式源Activity(即new Intent(arg0,arg1)中的第一個參數)和目標Activity(即new Intent(arg0,arg1)中的第二個參數)在同一個Task內,除非Intent包括了參數FLAG_ACTIVITY_NEW_TASK,如包含了此參數,目標Activity會起動到新的Task裡;
“singleTask”和“singleInstance” 總是把目標Activity作為一個Task的根元素,他們不會被啟動到一個其他Task裡。
2.是否允許多個實例的區別:
standard”和”singleTop”可以允許有多個實例,並且可以位於不同的Task中;
singleTop要求如果Activity Stack頂部已經有目標Activity實例,則直接講Intent發送給該實例,而不創建新實例。如Activity Stack沒有該實例,則創建新實例;
“singleTask”和”singleInstance”則只產生一個實例,並且是Task的根元素。“standard”和”singleTop”可以被實例化多次,並且是可以存在於不同的task中;這種實例化時一個task可以包括一個activity的多個實例;“singleTask”和”singleInstance”則限制只生成一個實例,並且是task的根元素。
3.是否允許其他Activity存在於本Task內的區別:
“singleInstance”獨占一個Task,其他Activity均不能存在於此Task中,如果它啟動一個新的Activity,不管新的Activity的launch mode如何,新的Activity都將運行於其他Task裡;
另外三種模式則可以和其他Activity共存。
4.是否每次都生成新實例的區別:
“standar”模式每次都生成一個新的Activity實例;
“singleTop”的Activity如果在Task的Activity Stack頂部則不生成新實例,直接使用此實例,否則生成一個新實例。
“singleeInstance”是其所在Task的Activity Stack裡的唯一Activity實例,它每次都會被重用
“singleTask”如果在Task的Activity Stack的頂部,則接收intent,否則該intent會被丟棄,但仍然會該Task返回前台。
android:TextView實現文字走馬燈效果(欺騙系統獲取持久的焦點) 通常情況下我們想實現文字的走馬燈效果需要在xml文件中這樣設置 <textv
使用ViewPager切換Fragment時,防止頻繁調用OnCreatView,fragmentoncreat使用ViewPager切換Fragment,我原先使用系統
《Android源碼設計模式解析與實戰》讀書筆記(二十三) 第二十三章、外觀模式 外觀模式是結構型設計模式之一,它在開發中的運用頻率非常高,是我們封裝API的常用手段。
Android自定義控件5--輪播圖廣告ViewPager基本實現,androidviewpager本文地址:http://www.cnblogs.com/wuyudon