onRetainNonConfigurationInstance()
的文档说“此功能纯粹被称为优化,您不能依赖它被调用。”
在什么情况下onRetainNonConfigurationInstance()
不会被调用?
关于我要实现的目标的一些背景知识:我希望activity
通知orientation
可靠地更改(但也希望活动被杀死并像往常一样重新启动)
答案 0 :(得分:1)
如果您希望在方向更改时再次重新启动活动(调用onCreate-> onResume),则不要在清单中放置configChanges =“orientation”。您可以在活动的onCreate方法中检查屏幕的方向,这可能就是您所需要的。如果您不希望活动重新启动,而只是切换方向,那么您在活动清单中添加configChanges标志,然后只调用onConfigurationChanged(),您也可以获得屏幕方向。当您在onCreate方法中运行昂贵的操作(启动线程查询数据库等)并且您希望将该信息/数据重用于纵向和横向时,第二种方法是好的。即使你想要你可以改变onConfigurationChanged()中的布局,就像它在创建时所做的那样,但是你再次需要找到对所有视图的引用,因为它们的id在这种情况下是不一样的。
在任何情况下,如果您想要在更改之前存在对某些内容的引用,那么configChanges方法更适合处理更改,但如果您要更改布局或其他内容,则需要更多工作。