zoukankan      html  css  js  c++  java
  • 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);
    }
    

      

  • 相关阅读:
    【ASP.Net MVC3 】使用Unity 实现依赖注入
    小菜学习设计模式(五)—控制反转(Ioc)
    ASP.NET MVC中使用Unity Ioc Container
    Unity依赖注入使用详解
    单例模式实现
    Oracle书籍资料链接——更新ing
    eclipse设置控制台字体大小
    eclipse——反编译插件
    java.lang.String里面的trim()方法——删除首尾空格
    java关键词整理——思维导图
  • 原文地址:https://www.cnblogs.com/bokeofzp/p/4721524.html
Copyright © 2011-2022 走看看