Activity横竖屏切换的问题

Activity在横竖屏切换的时候会重新走生命周期的方法,这样做的话会导致一些问题 比如我们在界面上录入的一些数据,但因为重新走了生命周期的方法onCreate()方法,这样就会导致前功尽弃,所以就想办法,在横竖屏切换的时候不能让其重新OnCreate(),Android中我们可以在清单文件中对应的Activity使用如下的属性  android:configChanges="keyboardHidden|orientation|screenSize"  这样就可以避免此类事情的发生。下面是示例代码:

package com.minimax.demo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

///Activity横竖屏切换/src/com/minimax/demo/MainActivity.java
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() {
		// TODO Auto-generated method stub
		super.onStart();
		System.out.println("onStart().....");
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		System.out.println("onResume().....");
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		System.out.println("onPause().....");
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		System.out.println("onStop().....");
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		System.out.println("onDestroy().....");
	}

	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		System.out.println("onRestart().....");

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

在没有添加对应的属性之前,我们切换横竖屏之后打印的Log日志如下:
04-22 21:50:51.954: I/System.out(24476): onCreate().....
04-22 21:50:51.964: I/System.out(24476): onStart().....
04-22 21:50:51.964: I/System.out(24476): onResume().....
04-22 21:50:56.524: I/System.out(24476): onPause().....
04-22 21:50:56.524: I/System.out(24476): onStop().....
04-22 21:50:56.524: I/System.out(24476): onDestroy().....
04-22 21:50:56.614: I/System.out(24476): onCreate().....
04-22 21:50:56.614: I/System.out(24476): onStart().....
04-22 21:50:56.614: I/System.out(24476): onResume().....
添加如下属性:
        <activity
            android:name="com.minimax.demo.MainActivity"
            android:label="@string/app_name" 
            android:configChanges="keyboardHidden|orientation|screenSize" 
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

在添加属性之后之后,打印的Log日志如下:
04-22 21:52:25.984: I/System.out(30283): onCreate().....
04-22 21:52:25.984: I/System.out(30283): onStart().....
04-22 21:52:25.994: I/System.out(30283): onResume().....

无论如何我们切换横竖屏,都不会重新走onCreate()方法
时间: 2024-10-12 08:14:15

Activity横竖屏切换的问题的相关文章

无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)

1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCreate()开始,直到调用onDestory()为止.Activity在onCreate()中设置所有“全局”状态以完成初始化. 而在onDestory()中释放所有系统资源.例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程, 而在onDestory()销

android开发之activity横竖屏切换时的生命周期以及横竖屏切换时的资源适配方案

背景:之前有过两篇写activity的博客 android之activity的生命周期详解:详细介绍了activity的整个生命周期.各状态间的转换和返回桌面时保存activity的状态 android之activity中onSaveInstanceState和onRestoreInstanceState的触发时机:介绍了activity中这两个方法的触发时机和作用 本篇博客会牵扯到里面的内容,如果你都有所了解可以直接往下看,如果不了解可以进去回忆下. 问题:在做应用的退出对话框时,发现如果对话

Activity横竖屏切换

默认情况下,当"屏幕方向"或"键盘显示隐藏" 变化时都会销毁当前Activity,创建新的Activity. 如果不希望重新创建Activity实例,可以按如下配置Activity: <activity android:name=".MainActivity" android:configChanges="keyboardHidden|orientation"> 注意Android3.2横竖屏幕切换时以上配置con

Android--纠正Activity横竖屏切换的生命周期的错误

1.本机测试环境 android 4.3, android:targetSdkVersion : 12,13,17 2.关于横竖屏切换的Activity生命周期的错误说法 初学Android,在学习Activity的生命周期时,自己在本机实验时,发现了一些不合理的情况. 那就是在横竖屏切换时,Activity并不会像网上大多数人所说的那样: 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次. 设置Activi

Activity横竖屏切换不重绘界面

从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样会重新调用各个生命周期的.因为screen size也开始跟着设备的横竖切换而改变.所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orienta

Activity横竖屏切换时 一些数据的保存

private VideoView videoView; 02.private static final String VIDEO_PATH = Environment 03. .getExternalStorageDirectory() 04. + File.separator 05. + "mymovie" 06. + File.separator + "shenghuaweiji.mp4"; 07. 08./** Called when the activit

android的Activity横竖屏切换时的生命周期

OnCreate()->OnStart->OnResume()->onPause()->onDestory->OnCreate()->OnStart->OnResume() 想要避免这种情况:要在manifest文件里面配置onconfigChanged属性 OnCreate:对象创建完毕,但此时不可见 OnStart: Activity在屏幕可见,但是此时没有焦点 OnResume:Activity在屏幕可见,并且获得焦点 onPause:Activity在屏幕

如何处理Activity横竖屏切换时 fragment会添加一个被又new一次的现象

当屏幕发生旋转,Activity发生重新启动,依附在Activity中的Fragment也会跟着Activity重新创建: 这样造成当旋转的时候,本身存在的Fragment会重新启动,然后当执行Activity的onCreate时,又会再次实例化一个新的Fragment,这就是出现的原因. 解决办法: 通过onCreate的参数Bundle savedInstanceState就可以判断,当前是否发生Activity的重新创建: 默认的savedInstanceState会存储一些数据,包括Fr

Activity嵌套多个Fragment实现横竖屏切换

一.上图 二.需求 近期项目遇到个横竖屏切换的问题,较为复杂,在此记之. 1.Activity中竖屏嵌套3个Fragment,本文简称竖屏FP1,FP2,FP3. 2.其中竖屏FP1与FP2可以切换为横屏的FL1,FL2,即竖屏FP1切换到对应的横屏FL1,竖屏FP2对应切换到横屏FL2. 3.FP3不允许横竖屏切换. 4.竖屏FP1,FP2,FP3用ViewPager实现左右滑动切换. 5.横屏的FL1,FL2用布局中的切换按扭实现左右切换,不允许滑动切换. 看到这需求有点儿晕菜了吧!!!呵呵