![android中手機切屏是activity生命周期的變化_第1頁](http://file4.renrendoc.com/view/5ce9466a76a78577df020736dc67177a/5ce9466a76a78577df020736dc67177a1.gif)
![android中手機切屏是activity生命周期的變化_第2頁](http://file4.renrendoc.com/view/5ce9466a76a78577df020736dc67177a/5ce9466a76a78577df020736dc67177a2.gif)
![android中手機切屏是activity生命周期的變化_第3頁](http://file4.renrendoc.com/view/5ce9466a76a78577df020736dc67177a/5ce9466a76a78577df020736dc67177a3.gif)
![android中手機切屏是activity生命周期的變化_第4頁](http://file4.renrendoc.com/view/5ce9466a76a78577df020736dc67177a/5ce9466a76a78577df020736dc67177a4.gif)
![android中手機切屏是activity生命周期的變化_第5頁](http://file4.renrendoc.com/view/5ce9466a76a78577df020736dc67177a/5ce9466a76a78577df020736dc67177a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
android點滴(12)—1.Android橫豎
屏切換時,Activity的生命周期的變化
(面試題)2011/10/1510:49:48|閱讀40次1.Android橫豎屏切換時,Activity的生命周期的變化。Activity的生命周期'/Files/cody1988/ActivityLifeCycle.rar完整生命周期(theentirelifetime)onCreate,onDestroy在創(chuàng)建和銷毀的時候調(diào)用。在onCreate中初始化全局資源,在onDestroy中銷毀資源??梢娚芷?thevisiblelifetime)onStart,onStop這是Activity可見,但是未必可交互即未必在最前面。維護著用戶可見的資源。前景周期(theforegroundlifetime)onResume,onPause此時Activity在最前面,可與用戶交互。一個Activity可在Resume與Pause之間頻繁的切換例如設(shè)備休眠。因此這兩個方法中只有相當輕量級的調(diào)用。橫豎屏切換時Activity的生命周期的變化與activity的configChanges的配置有關(guān)。1.configChanges不配置運行:Log{34}sysoLog.iTimepidMessage10-151005.I7297SystemoutonCreat已10-151005.I7297SystemoutonStairt10-151005.I7297SystemoutonResume初始時TextView顯示的內(nèi)容為“HelloWorld,LifeCycle!”,點擊Button
豎屏切換為橫屏:Log(44)TineLog.ipidtagW-Bs^agB110-1510:09.I72^?Systisa.out□nSavElnstanjceState10-1510:09,,I723?Syytefc.cutotiPawse10-1510:09...I72^7Systan.outonSt-ap10-151009.r7237Systex.outonDestrov10-1510:09..ISystem.out□nCreate10-1510:09...I7237System.o-utonSUrt10-1510:D9..I7297Systeu.cut口nEestorelnstancaState10-1510:09..aI729?SystancutonResunc此時TextView的內(nèi)容重新變?yōu)椤癏elloWorld,LifeCycle!橫屏切換為豎屏:Log(35)鄒?Ti*epidtag*Message10-15I7237SysteMoutonS?velnslsnce^10-15W:10.I7237SysteM.out10-1510:10.I72^7outonStop10-151(1:10.T7237Systex.outonDestroy10-1510:10.I7237Systex.outenCreate10-lS10:10.I?2?7System.outonStArl10-isid:lo.I725?Systeu.cutcnRestotrelnstane*Ste10-151S:1C.I7297SysteR.outohResuhe2.配置configChanges<activityandroid:name=".LifeCycle"android:configChanges="orientation"android:label="@string/app_name"></activity>運行,點擊Button豎屏切換為橫屏:沒有發(fā)生變化橫屏切換為豎屏:沒有發(fā)生變化結(jié)論:橫豎屏切換時Activity的生命周期與configChanges的配置相關(guān)。1.如果不配置,則要先銷毀Activity再創(chuàng)建,銷毀的過程中會調(diào)用onSavelnstanceState,2.如果配置configChanges為Orientation則不銷毀橫豎屏切換時候activity的生命周期博客分類AndroidAndroidXML通過以下部分代碼,我們可以了解清楚Activity頁面在橫,豎屏切換時,生命周期的變化:Java代碼6XpublicclassAndroidLifecycleextendsActivity{2.publicvoidonCreate(BundlesavedInstanceState){System.out.println("FirstActivity=======onCreate()========");super.onCreate(savedInstanceState);setContentView(R.layout.main);}8.@OverrideprotectedvoidonSaveInstanceState(BundleoutState){System.out.println("FirstActivity=======onSaveInstanceState()========");super.onSaveInstanceState(outState);}15.@OverrideprotectedvoidonRestoreInstanceState(BundleoutState){System.out.println("FirstActivity=======onRestoreInstanceState()========");super.onRestoreInstanceState(outState);}22.@OverridepublicvoidonConfigurationChanged(ConfigurationnewConfig){System.out
9.super.onConfigurationChanged(newConfig);}//CalledafteronCreate—orafteronRestartwhentheactivityhadbeen//stopped,butisnowagainbeingdisplayedtotheuser.Itwillbe//followedbyonResumeprotectedvoidonStart(){System.out.println("FirstActivity=======onStart()========");super.onStart();}//CalledafteronRestoreInstanceState,onRestart,oronPause,foryour//activitytostartinteractingwiththeuserprotectedvoidonResume(){System.out.println("FirstActivity=======onResume()========");super.onResume();}//Calledaspartoftheactivitylifecyclewhenanactivityisgoinginto//thebackground,buthasnot(yet)beenkilledprotectedvoidonPause(){System.out.println("FirstActivity=======onPause()========");super.onPause();}//Calledwhenyouarenolongervisibletotheuser.Youwillnextreceive//eitheronRestart,onDestroy,ornothing,dependingonlateruser//tectedvoidonStop(){System.out.println("FirstActivity=======onStop()========");super.onStop();}//PerformanyfinalcleanupbeforeanactivityisdestroyedprotectedvoidonDestroy(){System.out.println("FirstActivity=======onDestroy()========");super.onDestroy();}//CalledafteronStopwhenthecurrentactivityisbeingre-displayedto//theuser(theuserhasnavigatedbacktoit).Itwillbefollowedby//onStartandthenonResumeprotectedvoidonRestart(){
);System.out.println("FirstActivity=======onRestart());super.onRestart();}}Xml代碼<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="/apk/res/android"package="cn.d"android:versionCode="1"android:versionName="1.0"><!--android:configChanges="orientation"--><applicationandroid:icon="@drawable/icon"android:label="@string/app_name"><activityandroid:name=".AndroidLifecycle"android:label="@string/app_name"android:configChanges="orientation|keyboardHidden"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity></application></manifest>1、新建一個Activity,并把各個生命周期打印出來2、運行Activity,得到如下信息10-2302:35:54.261:INFO/chenys(4385):onCreate-->10-2302:35:54.271:INFO/chenys(4385):onStart-->10-2302:35:54.286:INFO/chenys(4385):onResume-->3、按crtl+f12切換成橫屏?xí)r10-2302:36:58.33110-2302:36:58.41110-2302:36:58.46210-2302:36:58.48110-2302:36:58.33110-2302:36:58.41110-2302:36:58.46210-2302:36:58.48110-2302:36:58.572INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->10-2302:36:58.622:INFO/chenys(4385):onStart-->10-2302:36:58.632:INFO/chenys(4385):onRestoreInstanceState-->10-2302:36:58.642:INFO/chenys(4385):onResume-->4、再按crtl+f12切換成豎屏?xí)r,發(fā)現(xiàn)打印了兩次相同的log10-23023814.172:10-23023814.172:10-23023814.172:10-23023814.172:10-23023814.172:10-23023814.281:10-23023814.301:10-23023814.312:10-23023814.331:10-23023814.812:10-23023814.852:10-23023814.861:10-23023814.892:10-23023814.921:10-23023815.021:10-23023815.031:10-23023815.111:INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)INFO/chenys(4385)onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->5、修改AndroidManifest.xml,把該Activity添加android:configChanges="orientation",執(zhí)行步驟310-23024232.201:10-23024232.201:10-23024232.232:10-23024232.301:10-23024232.311:10-23024232.402:10-23024232.471:10-23024232.471:10-23024232.481:INFO/chenys(4875)INFO/chenys(4875)INFO/chenys(4875)INFO/chenys(4875)INFO/chenys(4875)INFO/chenys(4875)INFO/chenys(4875)INFO/chenys(4875)onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->6、再執(zhí)行步驟4,發(fā)現(xiàn)不會再打印相同信息,但多打印了一行onConfigChanged10-2302:44:41.151:INFO/chenys(4875):onSaveInstanceState-->10-2302:44:41.151:INFO/chenys(4875):onPause-->
10-2302:44:41.151:INFO/chenys(4875)10-2302:44:41.151:INFO/chenys(4875)10-2302:44:41.371:INFO/chenys(4875)10-2302:44:41.421:INFO/chenys(4875)10-2302:44:41.521:INFO/chenys(4875)10-2302:44:41.541:INFO/chenys(4875)10-2302:44:42.002:INFO/chenys(4875)onStop-->onDestroy-->onCreate-->onStartonStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onConfigurationChanged-->110-2302:46:43.762:INFO/chenys(5193):onConfigurationChanged-->28、執(zhí)行步驟410-2302:47:27.652:INFO/chenys(5193):onConfigurationChanged-->210-2302:47:27.902:INFO/chenys(5193):onConfigurationChanged-->1總結(jié):1、不設(shè)置Activity的android:configChanges時,切屏?xí)匦抡{(diào)用各個生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次2、設(shè)置Activity的android:configChanges="orientation"時,切屏還是會重新調(diào)用各個生命周期,切橫、豎屏?xí)r只會執(zhí)行一次3、設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調(diào)用各個生命周期,只會執(zhí)行onConfigurationChanged方法Android面試錦集Intent的幾種有關(guān)Activity啟動的方式有哪些,你了解每個含義嗎?這里Androidl23提示大家,Intent的一些標記有FLAG_ACTIVITY_BROUGHT_TO_FRONT、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_TASK等。每種含義大家看SDK文檔和具體跑下這樣你的記憶會更深刻些。Activity和Task的啟動模式有哪些?每種含義是什么?有關(guān)在AndroidManifest.xml中的android:launchMode定義,主要有standard、singleTop、singleTask和singleInstance,同時對于android:taskAffinity這些問題大家也要了解,Android開發(fā)網(wǎng)在以前的文章中講過,不過很多開發(fā)者仍然不是很清楚,這些基礎(chǔ)問題我們以后仍然會再次總結(jié)。關(guān)于Activity的啟動模式,參考:/feng88724/archive/2011/05/11/6412638.aspx通過Intent傳遞一些二進制數(shù)據(jù)的方法有哪些?.使用Serializable接口實現(xiàn)序列化,這是Java常用的方法。.實現(xiàn)Parcelable接口,這里Android的部分類比如Bitmap類就已經(jīng)實現(xiàn)了,同時Parcelable在AndroidAIDL中交換數(shù)據(jù)也很常見的。能說下Android應(yīng)用的入口點嗎?真正的Android入口點是application的main,你可以看下androidmanifest.xml的包含關(guān)系就清楚了??梢詻]有Activity但是必須有ApplicationAndroid都有哪些XML解析器,都熟練掌握嗎?這里XmlPull、SAX和DOM相信做過Web開發(fā)的都已經(jīng)滾瓜爛熟了。SQLite支持事務(wù)嗎?添加刪除如何提高性能?SQLite作為輕量級的數(shù)據(jù)庫,比MySQL還小,但支持SQL語句查詢,提高性能可以考慮通過原始經(jīng)過優(yōu)化的SQL查詢語句方式處理。AndroidService和Binder、AIDL你都熟練嗎?作為Android重要的后臺服務(wù),這些每個Android開發(fā)者都應(yīng)該掌握,這也算是和JavaSE最大的不同了,具體的實例大家可以查看Android音樂播放器的源代碼Music.git中的,這里不再贅述。請描述下Activity的生命周期。創(chuàng)建oncreate-啟動onstart-恢復(fù)onResume-暫停onPause-結(jié)束onEnd-銷毀onDestroy如果后臺的Activity由于某原因被系統(tǒng)回收了,如何在被系統(tǒng)回收之前保存當前狀態(tài)?在”暫停onPause”狀態(tài)將數(shù)據(jù)保存。如何將一個Activity設(shè)置成窗□的樣式。設(shè)置Theme。如何退出Activity?如何安全退出已調(diào)用多個Activity的Application?請介紹下Android中常用的五種布局。請介紹下Android的數(shù)據(jù)存儲方式。請介紹下ContentProvider是如何實現(xiàn)數(shù)據(jù)共享的。如何啟用Service,如何停用Service。注冊廣播有幾種方式,這些方式有何優(yōu)缺點?請談?wù)凙ndroid引入廣播機制的用意。請解釋下在單線程模型中Message、Handler、MessageQueue、Looper之間的關(guān)系。AIDL的全稱是什么?如何工作?能處理哪些類型的數(shù)據(jù)?請解釋下Android程序運行時權(quán)限與文件系統(tǒng)權(quán)限的區(qū)別。(EditedbySodino)系統(tǒng)上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?請說明原由。14.有一個一維整型數(shù)組int[]data保存的是一張寬為width,高為height的圖片像素值信息。請寫一個算法,將該圖片所有的白色不透明(Oxffffffff)像素點的透明度調(diào)整為50%。14.聲明:ITeye文章版權(quán)屬于作者,受法律保護。沒有作者書面許可不得轉(zhuǎn)載。Android橫屏切換豎屏Activity的生命周期博客分類:Android開發(fā)Android面試XML曾經(jīng)遇到過一個面試題,讓你寫出橫屏切換豎屏Activity的生命周期。現(xiàn)在給大家分析一下他切換時具體的生命周期是怎么樣的:1、新建一個Activity,并把各個生命周期打印出來2、運行Activity,得到如下信息onCreate-->onStart-->onResume-->3、按crtl+f12切換成橫屏?xí)ronSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->4、再按crtl+f12切換成豎屏?xí)r,發(fā)現(xiàn)打印了兩次相同的logonSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->5、修改AndroidManifest.xml把該Activit添加android:configChanges="orientati執(zhí)行步驟3onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->6、再執(zhí)行步驟4,發(fā)現(xiàn)不會再打印相同信息,但多打印了一行onConfigChangedonSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onConfigurationChanged-->7把步驟5的android:configChanges="orientation改成android:configChanges="orientation|keyboardHi執(zhí)行步驟3,就只打印onConfigChangedonConfigurationChanged-->8、執(zhí)行步驟4onConfigurationChanged-->onConfigurationChanged-->總結(jié):1、不設(shè)置Activit的android:configChange時,切屏?xí)匦抡{(diào)用各個生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次2、設(shè)置Activity的android:configChanges="orientation"時,切屏還是會重新調(diào)用各個生命周期,切橫、豎屏?xí)r只會執(zhí)行一次3、設(shè)置Activity的android:configChanges="orientationlkeyboardHidden"時,切屏不會重新調(diào)用各個生命周期,只會執(zhí)行onConfigurationChanged方法總結(jié)一下整個Activity的生命周期補充一點,當前Activity產(chǎn)生事件彈出Toast和AlertDialog的時候Activity的生命周期不會有改變Activity運行時按下HOME鍵(跟被完全覆蓋是一樣的):onSaveInstanceState-->onPause-->onStoponRestart-->onStart--->onResumeActivity未被完全覆蓋只是失去焦點:onPause--->onResumeAndroid_橫豎屏切換時候Activity的生命周期(轉(zhuǎn)載)博客分類:android橫豎屏切換時候Activity的生命周期曾經(jīng)遇到過一個面試題,讓你寫出橫屏切換豎屏Activity的生命周期?,F(xiàn)在給大家分析一下他切換時具體的生命周期是怎么樣的:1、新建一個Activity,并把各個生命周期打印出來2、運行Activity,得到如下信息onCreate-->onStart-->onResume-->3、按crtl+f12切換成橫屏?xí)ronSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->4、再按crtl+f12切換成豎屏?xí)r,發(fā)現(xiàn)打印了兩次相同的logonSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->5、修改AndroidManifest.xml,把該Activity添加android:configChanges二"orientation",執(zhí)行步驟3onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->6、再執(zhí)行步驟4,發(fā)現(xiàn)不會再打印相同信息,但多打印了一行onConfigChangedonSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onConfigurationChanged-->7、把步驟5的android:configChanges="orientation"改成android:configChanges二"orientation|keyboardHidden",執(zhí)行步驟3,就只打印onConfigChangedonConfigurationChanged-->8、執(zhí)行步驟4onConfigurationChanged-->onConfigurationChanged-->總結(jié):1、不設(shè)置Activity的android:configChanges時,切屏?xí)匦抡{(diào)用各個生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次2、設(shè)置Activity的android:configChanges="orientation"時,切屏還是會重新調(diào)用各個生命周期,切橫、豎屏?xí)r只會執(zhí)行一次3、設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調(diào)用各個生命周期,只會執(zhí)行onConfigurationChanged方法總結(jié)一下整個Activity的生命周期補充一點,當前Activity產(chǎn)生事件彈出Toast和AlertDialog的時候Activity的生命周期不會有改變Activity運行時按下HOME鍵(跟被完全覆蓋是一樣的):onSaveInstanceState-->onPause-->onStoponRestart-->onStart--->onResumeActivity未被完全覆蓋只是失去焦點:onPause--->onResume橫豎屏切換時候Activity的生命周期AndroidXML1、新建一個Activity,并把各個生命周期打印出來2、運行Activity,得到如下信息onCreate-->onStart-->onResume-->3、按crtl+f12切換成橫屏?xí)ronSav
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國寵物安全救生衣行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球頂?shù)装b盒行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國落地式拆碼盤機行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球廚房家用電器行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球智能電梯紫外線消毒系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球商用儲水式熱水器行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球耐高溫硅膠電纜行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球夾具零件行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球磁參數(shù)測量儀行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球鈣鈦礦封裝膠膜行業(yè)調(diào)研及趨勢分析報告
- 四川省自貢市2024-2025學(xué)年上學(xué)期八年級英語期末試題(含答案無聽力音頻及原文)
- 2025-2030年中國汽車防滑鏈行業(yè)競爭格局展望及投資策略分析報告新版
- 2025年上海用人單位勞動合同(4篇)
- 新疆烏魯木齊地區(qū)2025年高三年級第一次質(zhì)量監(jiān)測生物學(xué)試卷(含答案)
- 衛(wèi)生服務(wù)個人基本信息表
- 高中英語北師大版必修第一冊全冊單詞表(按單元編排)
- 苗圃建設(shè)項目施工組織設(shè)計范本
- 廣東省湛江市廉江市2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 學(xué)校食品安全舉報投訴處理制度
- 2025年生物安全年度工作計劃
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 生物 含解析
評論
0/150
提交評論