安卓模擬器里,用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切換橫豎屏
打印如下
新聞熱點
疑難解答