android转屏时数据保存问题
16lz
2021-01-24
实习小记--
昨天给应用添加了这个功能,其实与其说是添加,还不如说是完善吧。
测试是用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
昨天给应用添加了这个功能,其实与其说是添加,还不如说是完善吧。
测试是用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
更多相关文章
- android sqlite 简明教程
- android 绘图时抗锯齿方法两种
- Android之SQLite 学习一
- 5、frida进阶-Android逆向之旅---Hook神器家族的Frida工具使用详
- Android中的布局和控件
- Android模拟器无法上网的解决方法
- Android(安卓)学习路线总结
- 网络请求框架AsyncHttpclient的简单使用
- sparseArray