付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】AndroidActivity啟動模式,回退棧管理!
(一):Activity被回收了怎么辦?當(dāng)系統(tǒng)內(nèi)存不足的時候Activity是有可能被回收的,打個比方用戶在AActivity啟動了BActivity那么A就處于停止?fàn)顟B(tài),由于內(nèi)存不足A會被回收,被回收之前Activity中的一些重要數(shù)據(jù)怎么辦呢?此時可以重寫onSaveInstanceState()方法,該方法會攜帶一個Bundle對象,可以巧妙的利用該對象來進行數(shù)據(jù)的保存,同時您也會發(fā)現(xiàn)在onCreate()方法中也會攜帶一個bundle對象,那么此時取出數(shù)據(jù)您就懂啦bundle.getXxx()。@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState!=
null
){
savedInstanceState.getInt("xxx");
//
}
}@Override
protected
void
onSaveInstanceState(Bundle
outState)
{
super.onSaveInstanceState(outState,
outPersistentState);
outState.putInt("xxx",
250);
}取出之后,在做相應(yīng)的恢復(fù)就可以了,比如說將數(shù)據(jù)還原到輸入框等。
(二):Activity的啟動模式!
相信您知道如何取啟動一個新的Activity,并指導(dǎo)安卓Activity是由系統(tǒng)管理的,但你知道他的啟動方式嗎?在實際開發(fā)中我們應(yīng)該根據(jù)實際情況去使用四種不同的模式,standard,singleTop,singleTask和singleInstance,可以在AndroidManifest.xml中設(shè)置<Activity/>..標(biāo)簽的Android:lanuchMode屬性,指定啟動的模式。
a:standard模式是系統(tǒng)默認的方式,在不進行顯示啟動的情況下,所有Activity都會使用該方法啟動。相信您已經(jīng)知道了系統(tǒng)是使用回退棧的模式來關(guān)聯(lián)Activity,在當(dāng)前模式下,系統(tǒng)并不會管當(dāng)前Activity實例是否存在,每當(dāng)啟動一個新的Activity就會生成一個Activity的實例,并從回退棧中入棧,且位于棧頂?shù)奈恢?。@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
//打印
Log.d("MainActivity",
this.toString())
setContentView(R.layout.activity_main);
Button
button
=
(Button)findViewById(R.id.button1);
button.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
v)
{
//啟動
Intent
intent
=
new
Intent(MainActivity.this,
MainActivity.class);
startActivity(intent);
}
});
}讀者可能會奇怪在MainActivity的基礎(chǔ)上啟動MainActivity,從邏輯上并沒什么意義,主要探究standard模式,運行效果:從打印我們可以看出,每點擊一次button1就會出現(xiàn)一個新的MainActivity實例,此時回退棧中就會存在3三個MainActivity實例,因此你需要點三次back鍵才能退出
b:singleTop模式,有時候會疑問當(dāng)你想要的Activity已經(jīng)處于棧頂了為什么還要創(chuàng)建新的實例?那么singleTop可以解決你的問題,singleTop會檢查Activity是否位于棧頂,如果存在則不會創(chuàng)建新的實例。但是,當(dāng)你從MainActivity跳轉(zhuǎn)到BActivity時MainActivity已經(jīng)不處于棧頂,如果從B切換到MainActivity,MainActivity的實例還是會創(chuàng)建的。可以在AndroidManifest.xml中設(shè)置<ActivityAndroid:lanuchMode="singleTop">模式來指定。
c:singleTask模式,singleTask模式是為解決singleTop模式遺留的問題而存在,從b點中可以看出,當(dāng)Activity沒有位于棧頂時啟動Activity依然會創(chuàng)建Activity實例。如果指定啟動模式為singleTask,那么啟動Activity之前系統(tǒng)會檢測回退棧中是否有當(dāng)前Activity實例的存在,如果存在則直接推向棧頂,否則創(chuàng)建實例再推向棧頂,從而可以避免重復(fù)創(chuàng)建實例的問題。
d:singleInstance模式,該模式有別于以上三種,指定為singleInstance模式的Activity系統(tǒng)會創(chuàng)建一個新的回退棧來管理,那這樣做有什么意義呢?例如:假設(shè)我們的Activity有一個是允許其他應(yīng)用程序調(diào)用的,如何我們要使Activity在當(dāng)前應(yīng)用程序中與其他應(yīng)用程序共享,那我們該如何處理呢?a,b,c三種肯定都是做不到的,因為每一個應(yīng)用程序都會有自己的回退棧,同一個Activity在不同的回退棧中必然創(chuàng)建了新的實例。使用singleInstance模式即可解決這個問題,使用這種模式系統(tǒng)會單獨分配一個回退棧來管理,不管是哪個應(yīng)用程序來訪問當(dāng)前Activity都會共用該回退棧中的實例,從而達到共享的目的。如圖:說明:ThirdActivity與FirstActivity位于同一回退棧,SecondActivity單獨位于一回退棧,而將SecondActivity設(shè)置為singleInstance模式。入口從FirstActivity進入SecondActivity,再從SecondActivity進入ThirdActivity,此時棧頂一定是ThirdActivity,當(dāng)按下back鍵ThirdA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遺體防腐整容師崗前考核試卷及答案
- 《國際金融》測試題附答案
- 全國獸醫(yī)考試試題及答案
- 醫(yī)師考核法律法規(guī)(醫(yī)院法律法規(guī)考試試題和答案)
- 安全考試試卷及答案大全
- 土建工程師面試試題(含答案)
- 營銷培訓(xùn)試題及答案大全
- 消防安全技術(shù)綜合能力測試題及答案
- 高頻領(lǐng)導(dǎo)力協(xié)會面試題及答案
- 護士急診急救試題及答案
- 印刷行業(yè)安全培訓(xùn)班課件
- 《慢性胃炎診療》課件
- 北京市延慶區(qū)2026屆八年級物理第一學(xué)期期末達標(biāo)測試試題含解析
- 繼電器性能測試及故障診斷方案
- 酒店清欠協(xié)議書模板模板
- 長者探訪義工培訓(xùn)
- 地下室結(jié)構(gòu)加固技術(shù)方案
- 人教版高一必修二英語單詞表
- 2026年高考數(shù)學(xué)一輪復(fù)習(xí)周測卷及答案解析:第9周 數(shù)列的概念、等差與等比數(shù)列
- 電廠清潔生產(chǎn)管理制度
- 第五單元第22課-健康生活新設(shè)件人教版初中信息科技八年級全一冊
評論
0/150
提交評論