Activity生命周期學習筆記,和橫豎切屏時候activity銷毀時候保存數據和調用的方法


activity生命周期圖:

 下面介紹一下里面的方法:

oncreat():在activity一執行就運行的,此過程加載xml里的視圖控件

onstart():是在activity視圖在手機屏幕上可見時候調用執行

onResme():是獲取手機屏幕空間的焦點,即可以點擊控件時候執行

onpause():與onResme()是相反的,手機失去控件焦點時候執行

onStop()是activity視圖在手機上不可見時候執行

ondestroy():是銷毀activity,隨即一個activity就會結束

在了解了activity的這些方法后,我們可以覆寫這些方法來達到我們自己的目的:

1、手機橫豎屏切換時候,activity會調用后3個方法,因此最后銷毀了,再重新創建新的activity,因此執行的數據又會回到最初的開始地方,比如:pdf閱讀器讀到30頁,我們轉動屏幕又回到第一頁這是用戶不想的,下面由2種方法解決該問題:

(1)、我們在該activity清單文件里加上一個屬性:android:configChanges="keyboardHidden|orientation"如下圖:

<activity
            android:configChanges="keyboardHidden|orientation"  // keyboardHidden是隱藏軟鍵盤,當橫豎屏切換時候,系統會判斷是否適合顯示軟鍵盤,后面一個是切屏 即這兩個動作不會重啟activity
                                      //也可以在代碼中調用onConfigurationChanged(Configuration newConfig)來實現   
            android:name=".SecondActivity"
            android:label="secondactivity" >
             <intent-filter>
                <action android:name="com.example.multiactivity.SecondActivity" />
                <action android:name="com.example.multiactivity.SecondActivity2" />
                <action android:name="com.example.multiactivity.SecondActivity3" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

 同時也學習一下橫豎屏顯示的方法:

android:screenOrientation="landscape"---控制Acitvity為橫屏顯示。

android:screenOrientation="portrait"---控制Activity為豎屏顯示

2、我們可以在覆寫activity里的onSaveInstanceState(Bundle outState)方法,該方法再activity被ondestroy()時調用來保存數據,在重新創建調用oncreat()時候獲取保存的值,設置page=30,注意onSaveInstanceState()方法在什么時候調用,參見http://blog.csdn.net/lccly/article/details/6089667

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState!=null)
        {
        	int page=savedInstanceState.getInt("page");//取得保存的值
        	setpage(30);
        }
}


protected void onSaveInstanceState(Bundle outState) {
	// TODO Auto-generated method stub
	super.onSaveInstanceState(outState);  //將頁碼保存字bundle對象中
	outState.putInt("page", 30);
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM