安卓模拟器里,用ctrl+f11按键来触发横竖屏,横竖屏切换的时候默认会触发生命周期方法,
在清单文件中配置下面可以,不用去触发生命周期的方法,下面三种情况发生的时候不会出发生命周期的方法orientation|keyboardHidden|screenSize
默认情况下,横竖屏切换会触发生命周期方法,横竖屏切换的时候当前的activity会destroy,同时会开启另一个activity.如果不行横竖屏不触发生命周期方法,需要将横竖屏切换写死
android:configChanges="orientation|keyboardHidden|screenSize"
keyboardHidden:隐藏键盘(软键盘出现会改变屏幕的宽高)
screenSize:屏幕宽高改变
orientation:方向改变的时候
避免横竖屏切换,写死,需要在清单文件中对activity配置:
android:screenOrientation="landscape" //横屏写死
android:screenOrientation="portrait" //竖屏写死
代码中横竖屏写死的方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//锁屏activity为横屏
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//锁定为竖屏
System.out.println("第一个onCreate方法调用");
}
测试横竖屏切换出发生命周期方法代码如下:
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
MainActivy
package com.ldw.hengshu;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("第一个onCreate方法调用");
}
@Override
protected void onStart(){
super.onStart();
System.out.println("第一个onStart方法调用");
}
@Override
protected void onResume(){
super.onResume();
System.out.println("第一个onResume方法调用");
}
@Override
protected void onPause(){
super.onPause();
System.out.println("第一个onPause方法调用");
}
@Override
protected void onStop(){
super.onStop();
System.out.println("第一个onStop方法调用");
}
@Override
protected void onDestroy(){
super.onDestroy();
System.out.println("第一个onDestroy方法调用");
}
@Override
protected void onRestart(){
super.onRestart();
System.out.println("第一个onRestart方法调用");
}
}
横竖屏切换以前打印如下:
按下ctrl+F11切换横竖屏
打印如下