安卓模拟器里,用ctrl+f11按键来触发横竖屏,横竖屏切换的时候默认会触发生命周期方法,
在清单文件中配置下面可以,不用去触发生命周期的方法,下面三种情况发生的时候不会出发生命周期的方法orientation|keyboardHidden|screenSize
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>MainActivypackage 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切换横竖屏
打印如下
新闻热点
疑难解答