我正在开发一个应用程序,捕获图像作为功能之一。在我的主屏幕上,我有两个旋转器。选择微调器值后,用户可以通过单击拍照按钮捕获图片。达到这个工作正常。但问题在于Camera App Orientation。
拍照按钮启动相机。当图像被捕获时,它保存(绝对正常)并返回到父活动。 但问题是刷新活动。回来的时候我可以看到以下有线的东西
1.)有时它显示横向屏幕(1秒)并返回到portait,刷新活动并导致重置Spinner值。
2.。)有时它会重置Spinner值。
真的很烦人。我没有任何线索来解决这个问题。我希望你们中的一些人能解决这个问题。
非常赞赏。
答案 0 :(得分:2)
当您在另一个应用程序(相机)中启动活动时,为任何事情做好准备是件好事。活动可能会返回错误数据,屏幕方向可能会更改,或者可能需要很长时间才能返回到您的应用。根据您的描述,每次启动相机应用时,听起来好像方向都在变化。
Android具有内置的状态管理方法来处理这种类型的场景。您可以覆盖onSaveInstanceState()
方法来存储活动的状态(例如,微调器值),然后在onCreate()
中恢复该状态。 (示例here。)这将处理您启动Camera应用程序的情况,或者您的用户按下Home按钮然后返回应用程序等。
修改强>:
仅当您的活动因内存压力而被杀死然后稍后重新创建时,才会调用 onRestoreInstanceState()
。使用Bundle
传递给onCreate()
(在设备旋转后再次调用)会更加可靠。 Bundle
将包含onSaveInstanceState()
中存储的所有内容。
如果您需要将工作推迟到onResume()
,那么您将需要使用onCreate()
填充Activity
类中的某些成员变量,然后使用这些变量onResume()
。