android转屏时数据保存问题

来源:互联网 发布:淘宝店全屏自定义代码 编辑:程序博客网 时间:2024/06/05 20:43
实习小记--

昨天给应用添加了这个功能,其实与其说是添加,还不如说是完善吧。

测试是用2.2的

网上方法有很多,我大致试了两种,均可以成功:

方法一:

在AndroidManifest.xml中,在需要转屏时,数据保存的Activity里添加android:configChanges="orientation|keyboardHidden",

然后再该Activity里重写如下方法:

 

@Override
public void onConfigurationChanged(Configuration newConfig){
System.out.println("waw.....");
super.onConfigurationChanged(newConfig);
}
因为转屏时,会重新调用OnCreate()方法,这里的实质就是跳过了这些初始化的操作,直接调用onConfigurationChanged()这个方法了

方法二:

转屏时,将需要的数据暂时记录下来,然后,恢复数据方法如下,重写两个方法:

 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
savedInstanceState.putString("text", myEditText.getText().toString());
super.onSaveInstanceState(savedInstanceState);
}
@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
super.onRestoreInstanceState(savedInstanceState); 
String text = savedInstanceState.getString("text");
StringBuilder sb = new StringBuilder();
sb.append(text);
myEditText.setText(sb);
}
转屏时,会自动调用onSaveInstanceState()方法,然后在这个方法里,将需要的数据暂时存起来,当转屏动作完成时,会调用onRestoreInstanceState()方法,

然后将数据取出,进行重置。

另外,附上得到手机横竖屏状态的基本方法:

 

if (this.getResources().getConfiguration().orientation == 
           Configuration.ORIENTATION_PORTRAIT) {
//竖屏
popupGoTo = new PopupWindow(gotoPopView, popupW*2,
popupW);
} else {
popupGoTo = new PopupWindow(gotoPopView, popupW,
popupW*2/3);
}
 

附上转屏时,调用的函数:

竖屏-> 横屏

onSaveInstanceState

onPause

onStop

onDestory

onCreate

onStart

onRestoreInstanceState

onResume

横屏- > 竖屏


onSaveInstanceState

onPause

onStop

onDestory

onCreate

onStart

onRestoreInstanceState

onResume

onSaveInstanceState

onPause

onStop

onDestory

onCreate

onStart

onRestoreInstanceState

onResume

 

 

转载自:http://www.lightwj.com/2011/07/30/android9.html
原创粉丝点击