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/。横竖屏的布局文件名称保持一致。
-
布局文件内容区别:
- 竖屏是LinearLayout,横屏是FrameLayout。
- 竖屏是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对输出格式进行格式化操作
网友评论