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); }