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