美文网首页
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