android 禁止横竖屏切换时调用onCreate函数
来源:互联网 发布:条码软件 编辑:程序博客网 时间:2024/05/21 20:30
在横竖屏切换的时候会重新调用onCreate方法,可以使用以下方法禁止切换的过程中调用onCreate方法,如果你需要横屏和竖屏使用不同的布局文件,可能这种方式是不行的,经过我自己写代码测试,如果当前是竖屏,经过切换后它并不会使用横屏的布局文件,而是将竖屏的布局文件使用在横屏状态下,不知道是我写的不合适还是本来就这样,希望和大家讨论这个问题。通过查阅Android API可以得知android:onConfigurationChanged实际对应的是Activity里的onConfigurationChanged()方法。在AndroidManifest.xml中添加上诉代码的含义是表示在改变屏幕方向、弹出软件盘和隐藏软键盘时,不再去执行onCreate()方法,而是直接执行onConfigurationChanged()。如果不申明此段代码,按照Activity的生命周期,都会去执行一次onCreate()方法,而onCreate()方法通常会在显示之前做一些初始化工作。所以如果改变屏幕方向这样的操作都去执行onCreate()方法,就有可能造成重复的初始化,降低程序效率是必然的了,而且更有可能因为重复的初始化而导致数据的丢失。这是需要千万避免的。
禁止调用onCreate方法:在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidden"属性或者代码中添加这个函数
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
我写的测试程序:
package lzu.LandAndPortraintTest;import android.app.Activity;import android.content.pm.ActivityInfo;import android.content.res.Configuration;import android.os.Bundle;public class LandAndPortraintTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); printSentence(); } public void printSentence(){ System.out.println("printSentence"); } public void printPortraintSentence(){ System.out.println("printSentence Portraint"); } public void printLandscapeSentence(){ System.out.println("printSentence Landscape"); } public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { printLandscapeSentence(); } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { printPortraintSentence(); } }}layout-land下main.xml文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /></LinearLayout>layout-port下main.xml文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/app_name" /></LinearLayout>values下strings.xml文件:
<?xml version="1.0" encoding="utf-8"?><resources> <string name="hello">Hello World, LandAndPortraintTest!</string> <string name="app_name">LandAndPortraintTest</string></resources>
结果:
- android 禁止横竖屏切换时调用onCreate函数
- Android 禁止横竖屏切换
- Android 禁止横竖屏切换
- android禁止横竖屏切换
- Android禁止横竖屏切换
- Android 禁止横竖屏切换
- android 禁止横竖屏切换
- Android 禁止横竖屏切换
- 【android】禁止横竖屏切换
- android手机屏幕横竖屏切换禁止调用生命周期函数方法
- Android程序怎样禁止横竖屏切换
- Android程序怎样禁止横竖屏切换
- Android程序怎样禁止横竖屏切换
- Android程序怎样禁止横竖屏切换
- 【Android如何禁止横竖屏切换】
- Android程序怎样禁止横竖屏切换
- android横竖屏切换,不重新执行onCreate的方法
- Android横竖屏切换不重新调用onCreate()
- 2006 求奇数的乘积
- 动态查看磁盘读写信息
- JavaScript语法学习笔记之 鼠标及按键操作
- 改变某个单元格的背景 html table td bgcolor
- cognos本页合计+本表合计,不分页显示
- android 禁止横竖屏切换时调用onCreate函数
- js随机让小方格变亮
- HP提供集成安全体系来保证业务成果
- Extjs VType自带的几种默认验证
- JDK/bin目录下的不同exe文件的用途(appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii...)
- OpenCV学习笔记-形态学
- hdu 1847 被打击了
- 求子集
- sql 命令备份数据库: