onRetainNonConfigurationInstance()
的文档中说:“这个函数的调用纯粹是一个优化,您不能依赖于它的调用。”
在什么情况下不调用onRetainNonConfigurationInstance()
?
关于我要实现的目标的一些背景知识:我希望我的activity
能够被可靠地通知orientation
更改(但也希望活动像往常一样被终止并重新启动)。
最佳答案
如果希望在方向更改时再次重新启动活动(调用oncreate->onresume),则不会将configchanges=“orientation”放入清单中。您可以在活动的oncreate方法中检查屏幕的方向,这可能是您所需要的。如果不希望活动重新启动本身,而只希望切换方向,则在活动的清单中添加configChanges标志,然后只调用onconfigurationChanged(),您也可以在其中获取屏幕方向。当在oncreate方法中运行昂贵的操作(启动线程查询数据库等)并且希望将该信息/数据用于纵向和横向时,第二种方法是好的。即使您想更改onconfigurationchanged()中的布局,就像在create中一样,但您仍然需要找到对所有视图的引用,因为在这种情况下,它们的id不相同。
在任何情况下,如果希望引用在声明更改之前存在的内容,那么configchanges方法对于处理更改更好,但是如果要更改布局或其他内容,则需要做更多的工作。