急!关于activity恢复onRetainNonConfigurationInstance()

xiejia5220 2013-08-09 11:40:02
小弟我最近遇到苦手问题了!

问题:现程序的自身使用的SDK为API 8(android2.2),AndroidManifest.xml中设置了TargetVersion=14

所以关于android:configChanges="orientation"这句话如果在3.0以上的厂商机器上,旋转是不会调用:
onConfigurationChanged(Configuration newConfig)的!!!
一定要设置成android:configChanges="orientation|screensize"才会调用!!!

但是API8不支持screensize!,所以无奈,每次旋转屏幕都要从新oncreate()!!!


措施:
每次旋转都会destory()前,想调用onRetainNonConfigurationInstance()来保存数据,在oncreate()中进行数据恢复。

(保存)
@Override
public Object onRetainNonConfigurationInstance() {
final MyDataObject data = collectMyLoadedData();
return data;
}

(恢复)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();
if (data == null) {
data = loadMyData();
}
...
}


请问:
onRetainNonConfigurationInstance()是可以返回一个object的!甚至是可以返回activity本身,如果返回activity是不是能直接恢复到之前没有旋转的状态!!!因为代码里面逻辑太多了!一个一个变量的赋值太过于繁琐了!!!怎样合理的运用???

谢谢!!!!!
...全文
65 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧