Activity的橫豎屏切換,之探索橫屏切換豎屏切時會執行兩次的理解
橫屏切換豎屏切時會執行兩次這個問題一直困擾著我,查了好多資料都無法驗證,然後我就將生命週期全部重寫,在不同的版本上執行檢視日誌。最終才發現,橫屏切換豎屏執行兩次並非所有版本都這樣,在2.3版本及以後都驗證這句話不符合,但當我嘗試到2.2時發現的確這樣,當螢幕旋轉時會執行兩次。
如果你有好奇心可以去下面地址下載android2.2的platforms
http://pan.baidu.com/s/1qXOdsBU
注意:測試需要改清單檔案,否則會報錯。
一下例子在android4.4上測試結果:
在清單檔案中配置該屬性:android:configChanges屬性
總結:
1、不設定Activity
2、設定Activity的android:configChanges="orientation"時,切屏還是會重新呼叫各個生命週期,切橫、豎屏時只會執行一次
3、設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新呼叫各個生命週期,只會執行onConfigurationChanged方法
注意:自從Android 3.2(API 13),在設定Activity的android:configChanges="orientation|keyboardHidden"
不設定android:configChanges情況下:
測試程式碼:
public classMainActivity extends Activity {
privateString TAG="MainActivity";
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG,"onCreate");
}
@Override
protectedvoid onStart() {
super.onStart();
Log.i(TAG,"onStart");
}
@Override
protectedvoid onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG,"onRestoreInstanceState");
}
@Override
protectedvoid onResume() {
super.onResume();
Log.i(TAG,"onResume");
}
@Override
protectedvoid onPause() {
super.onPause();
Log.i(TAG,"onPause");
}
@Override
protectedvoid onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG,"onSaveInstanceState");
}
@Override
protectedvoid onStop() {
super.onStop();
Log.i(TAG,"onStop");
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
Log.i(TAG,"onDestroy");
}
}
螢幕切換activity的生命週期執行:
豎屏切換橫屏:(結束掉當前activity,重新建立新的activity)
執行中的activity----onPause-----onStop-----onDestroy-----onCreate------onStart---------onRsume
橫屏切換豎屏
執行中的activity----onPause-----onStop-----onDestroy-----onCreate------onStart---------onRsume
注意:前三個和後三個不屬於同一個生命週期。
android2.2測試結果:
注:僅僅輸出了橫屏切換豎屏
android4.4僅僅橫屏切換豎屏:
另外,值得注意的是,生命週期的執行順序有所不同,主要表現在onSaveInstanceState和onRestoreInstanceState
相關推薦
Activity的橫豎屏切換,之探索橫屏切換豎屏切時會執行兩次的理解
橫屏切換豎屏切時會執行兩次這個問題一直困擾著我,查了好多資料都無法驗證,然後我就將生命週期全部重寫,在不同的版本上執行檢視日誌。最終才發現,橫屏切換豎屏執行兩次並非所有版本都這樣,在2.3版本及以後都驗證這句話不符合,但當我嘗試到2.2時發現的確這樣,當螢幕旋轉時會執行兩次
activity被回收後,點選Tab無法切換fragment
1、原因:當activity在後臺並且記憶體不足時,系統會把activity給回收掉,但也會儲存部分(不是全部)資訊用於下次頁面恢復。這樣會導致下次進入頁面後佈局或資料錯亂,並且點選底部Tab無法切換fragment。 2、解決方法: (1)方法一:註釋掉sup
viewpager即能實現滑動切換,又能點選切換的實現
viewpager對於我們來說並不陌生,用到的地方很多,也很方便,這裡我就簡單的處理一下滑動和點選veiwpager切換,廢話不多說,上程式碼: 佈局很簡單:不多說 <RelativeLayo
根據圖片完整路徑,獲得圖片的寬和高,判斷是橫版還是豎版圖片
判斷圖片是橫版還是豎版圖片,就要獲得圖片的寬和高,有兩種獲得方式 1、圖片在同一個機器(本地)可以預覽 /** * @function:根據圖片完整路徑,判斷是橫版還是豎版圖片 * @pa
AbstractRoutingDataSource動態資料來源切換,AOP實現動態資料來源切換
AbstractRoutingDataSource動態資料來源切換 上週末,室友通宵達旦的敲程式碼處理他的多資料來源的問題,搞的非常的緊張,也和我聊了聊天,大概的瞭解了他的業務的需求。一般的情況下我們都是使用SSH或者SSM框架進行處理我們的資料來源的資
tap點擊一次,內部程序執行兩次,多次
tap 得到 data 程序 -s document 解釋 bsp 一次 調試過程發現,使用 $(document).on(‘tap‘, ‘.children2‘, function () { //內部程序 }) 點擊children2的時候,程序在裏面執行了兩次。百度得
struts2,action方法自動執行兩次
sys sele urn 自動 obj sel hiberna ron name 發現一個比較有意思的bug, //Action中以get開頭且返回類型不為void(如 public Object get*() )的方法會被自動執行//放入值棧時會執行一次,//若在頁面調
JVM菜鳥進階高手之路六(JVM每隔一小時執行一次Full GC)
JVM菜鳥進階高手之路六(JVM每隔一小時執行一次Full GC) 轉載請註明原創出處,謝謝! 上次分析詳細地址在:http://www.cnblogs.com/lirenzuo/p/7531700.html 以為上次問題是rmi的問題就此結束了,但是問題並沒有結束,其實本次問
####jquery click點選一次執行兩次解決方法【遇到】【解決(先接觸繫結,再繫結):$('#addImg').unbind('click').click(function () {})】
====專案例項: <%--$("body").on("click", "#toggle-button${activityDTO.id}", function (e) {--%> // 一次點選兩次觸發事件 <%--$("body").on("click", "#switc
解決監聽label時,點選label內input執行兩次的bug
有的時候,我們需要監聽label點選事件和input點選事件,如下所示: <label id="checkbox" data-role="checkbox"> <input id="storepwd" type="checkb
spring定時器,定時器一次執行兩次的問題
今天在做一個專案的時候用到了Spring的定時計劃任務。這是Spring的特色功能,可以根據設定在特定的時間或間隔時間做特定的事。 下面給出一個例子: package net.csdn.blog.chaijunkukn; import
用jquery 繫結一個按鈕click事件後,第一次點選後,一切正常,第二次點選,竟然執行兩次,以後越來越多
用jquery 繫結一個按鈕click事件後,第一次點選後,一切正常,第二次點選,竟然執行兩次,以後越來越多。 後來檢視文件發現 jquery click 不是 替換原有的function 而是接著新增,所以才會執行次數越來越多。 這有就可以在新增之前要先解除cli
關於Activity中onCreate()方法執行兩次的問題
這兩天練習碰見個問題,當我要把視窗設定為橫屏時,我使用的方法是在程式碼裡呼叫:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 執行,沒問題。 於是接著各種編碼。。。 但是再次執行時發
用jquery 繫結一個按鈕click事件後,第一次點選後,一切正常,第二次點選,竟然執行兩次,以後越來越多
用jquery 繫結一個按鈕click事件後,第一次點選後,一切正常,第二次點選,竟然執行兩次,以後越來越多, 後來檢視文件發現 jquery click 不是 替換原有的function 而是接著新增,所以才
input內容改變後,ie11中change事件執行兩次的解決辦法
頁面檔案上傳,程式碼如下: <form id="subId" action="doc/uploadTranslate"enctype="multipart/form-data"method="p
Java Web開發中,自定義過濾器被執行兩次的原因分析及解決辦法
本文出處:http://blog.csdn.net/chaijunkun/article/details/7646338,轉載請註明。由於本人不定期會整理相關博文,會對相應內容作出完善。因此強烈建議在原始出處檢視此文。 在Java Web開發過程中,我們可以使用過濾器和Sp
配置切面出現問題,執行監聽前後方法執行兩次情況
import java.sql.Connection; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotat
頁面提交一次請求,action執行兩次
問題描述:struts2框架,ajax請求下頁面提交一次請求,action中的方法會執行兩次原因:action中的方法以get開頭,所以執行兩次,原理不清楚,猜測與struts2的屬性驅動有關係(以set、get方式設定和取值)解決方法:把方法名改為以其他字串開頭就好了
Cocos2dx CCJumpTo函式執行兩次跳躍時,座標異常
最近剛接觸Cocos2dx,想寫一個點選螢幕人物跳躍的功能,完成後發現,連續點選兩次螢幕任務跳躍時動作異常,不知何解? bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { //pSprit
登入頁面在輸入了正確的使用者名稱和密碼後仍跳轉到登入頁面而不是期望的系統首頁面,debug的時候發現,登入頁面呼叫的action類方法被呼叫了兩次,後臺無法獲取前臺頁面傳過來的引數。
問題描述: 專案首頁面進不去,debug的時候發現,index頁面呼叫的action類方法被呼叫了兩次,後臺無法獲取前臺頁面傳過來的引數,導致登入頁面在輸入了正確的使用者名稱和密碼後仍跳轉到登入頁面而不是期望的系統首頁面。 可能原因: 在Eclipse中的專案名與專案配置檔