美文网首页
Android编程权威指南 - 第3章 Activity的生命周

Android编程权威指南 - 第3章 Activity的生命周

作者: JMasche | 来源:发表于2016-11-08 00:39 被阅读14次

    Activity的状态种类

    • onCreate():创建
    • onStart(): 启动
    • onResume():重启
    • onPause():暂停
    • onStop():停止
    • onDestroy():销毁

    常规操作的状态变更

    • 启动APP:onCreate -> onStart -> onResume
    • 后退健:onPause -> onStop -> onDestroy
    • 主屏健: onPause -> onStop
    • 按主屏键 -> 启动APP: onStart -> onResume
    • 最近应用: onPause -> onStop
    • 最近应用中点x: 没有任何记录,app并没有被销毁
    • 最近应用中向左滑动: onDestroy
    • 没有被销毁的Activity会被系统自动回收,但什么时候回收,没有人清楚

    屏幕旋转

    • 屏幕旋转时,Activity先销毁,后重新创建。这意味着,当屏幕旋转后,原有的数据无法保存。
    • 如果需要保存,则需要使用将数据保存在Bundle对象中,这个对象是onCreate函数创建时就已经传入的。
      protected void onCreate(Bundle savedInstanceState)
    • Bundle是一个key-value类型的对象,如果需要将数据保存,则需要复写onSavedInstanceState函数
    @Overridepublic void onSaveInstanceState(Bundle savedInstanceState) {   
          super.onSaveInstanceState(savedInstanceState);    
          Log.i(TAG, "onSavedInstanceState");    
          savedInstanceState.putInt(KEY_INDEX, mCurrentIndex);
    }
    
    • 引用时则需要在onCreate函数中,将值取出并赋值
    if (savedInstanceState != null) {    
        mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, 0);
    }
    

    横屏时的资源文件

    • layout布局文件:竖屏的布局文件放在/res/layout/中。横屏时,需要新建一个文件夹放置对应的layout文件,目录地址是/res/layout-land/。横竖屏的布局文件名称保持一致。
    • 布局文件内容区别
      1. 竖屏是LinearLayout,横屏是FrameLayout。
      2. 竖屏是android:gravity控制位置,横屏是android:layout_gravity
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
              android:layout_width="match_parent"    
              android:layout_height="match_parent" >    
              
              <TextView        
                  android:id="@+id/question_test_view"        
                  android:layout_width="wrap_content"        
                  android:layout_height="wrap_content"        
                  android:layout_gravity="center_horizontal"        
                  android:padding="24dp" />        
    
               <LinearLayout        
                   android:layout_width="wrap_content"        
                   android:layout_height="wrap_content"        
                   android:layout_gravity="center_vertical|center_horizontal"        
                   android:orientation="horizontal" >        
    
                   <Button            
                           android:id="@+id/true_button"            
                           android:layout_width="wrap_content"            
                           android:layout_height="wrap_content"            
                           android:text="@string/true_button" />        
    
                    <Button            
                           android:id="@+id/false_button"            
                           android:layout_width="wrap_content"            
                           android:layout_height="wrap_content"            
                           android:text="@string/false_button" />    
    
                </LinearLayout>    
    
                <LinearLayout        
                      android:layout_width="wrap_content"        
                      android:layout_height="wrap_content"        
                      android:layout_gravity="bottom|right"        
                      android:orientation="horizontal" >        
    
                      <ImageButton            
                              android:id="@+id/prev_button"            
                              android:layout_width="wrap_content"                    
                              android:layout_height="wrap_content"            
                              android:src="@mipmap/arrow_left" />        
    
                      <ImageButton            
                              android:id="@+id/next_button"            
                              android:layout_width="wrap_content"            
                              android:layout_height="wrap_content"            
                              android:src="@mipmap/arrow_right" />    
    
              </LinearLayout>
      </FrameLayout>
    

    日志记录的级别与方法

    • ERROR:Log.e(TAG, msg)
    • WARNING:Log.w(TAG, msg)
    • INFO:Log.i(TAG, msg)
    • DEBUG:Log.d(TAG, msg)
    • VERBOSE:Log.v(TAG, msg)
    • verbose级别的最低,TAG是自定义的记录在日志种的标识,msg是记录的内容
    • 可以通过String.format对输出格式进行格式化操作

    相关文章

      网友评论

          本文标题:Android编程权威指南 - 第3章 Activity的生命周

          本文链接:https://www.haomeiwen.com/subject/vjbwuttx.html