Android-android 旋转手机的时候,如何忽略onCreate再次被系统调用?

需求定制 需求定制 主题:1050 回复:2283

Android-android 旋转手机的时候,如何忽略onCreate再次被系统调用?

晚风撩人 发布于 2017-08-29 字数 157 浏览 1259 回复 3

实现一个程序,主要是不想在手机横竖屏的时候重新onCreate,所以在配置文件中增加了配置选项:

android:configChanges="orientation|keyboardHidden"

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

想挽留 2017-10-10 3 楼

找到原因了。

从sdk 3.2+,当手机屏幕发现旋转,新增加一个screenSize,这个值也会跟着发生改变。所以要不想重绘界面,需要把screenSize这项也要加入到配置文件中。

android:configChanges="orientation|keyboardHidden|screenSize"

Android Developer描述如下:
Caution: Beginning with Android 3.2 (API level 13), the "screen size" also changes when the device switches between portrait and landscape orientation. Thus, if you want to prevent runtime restarts due to orientation change when developing for API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), you must include the "screenSize" value in addition to the "orientation" value.

浮生未歇 2017-10-10 2 楼

我是2.2的sdk screensize用不了 不过我通过下面方法解决了这个问题
1.相机返回后将数据保存在 onRetainNonConfigurationInstance方法里 我用的是hashmap

@Override
public HashMap<Integer, Object> onRetainNonConfigurationInstance() {
HashMap<Integer, Object> map = new HashMap<Integer, Object>();
map.put(0, imgUrl);
map.put(1, mReturnBitmap);
if (null != mWeiboText) {
map.put(2, mWeiboText.getText());
}
return map;
}
2.在oncreate里面通过getLastNonConfigurationInstance把数据取出来 继续用
HashMap<Integer, Object> map = (HashMap<Integer, Object>) getLastNonConfigurationInstance();

这样在用户看来界面还是原来的界面 而不是新建了一个

瑾兮 2017-09-29 1 楼

调用相机拍照,如果不用加这个属性 有的手机上会出现页面 上移的情况..