我的主要活动有一些代码,可以进行一些不应该被中断的数据库更改.我正在另一个线程中执行繁重的任务,并使用一个进度对话框,我将其设置为不可取消.然而,我注意到,如果我旋转手机,它会重新启动活动,这对正在运行的进程非常不利,我会得到一个力关闭.
我想做的是通过编程禁用屏幕方向更改,直到我的流程完成,此时方向更改已启用.
我的主要活动有一些代码,可以进行一些不应该被中断的数据库更改.我正在另一个线程中执行繁重的任务,并使用一个进度对话框,我将其设置为不可取消.然而,我注意到,如果我旋转手机,它会重新启动活动,这对正在运行的进程非常不利,我会得到一个力关闭.
我想做的是通过编程禁用屏幕方向更改,直到我的流程完成,此时方向更改已启用.
正如克里斯在他的self-answer中所解释的那样,打电话给
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
然后
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
真的很有魅力...在真正的设备上!
在模拟器上测试时不要认为它坏了,ctrl+F11快捷键总是改变屏幕方向,而不是模拟传感器的移动.
编辑:这不是最好的答案.正如 comments 中所解释的,这种方法存在一些问题.The real answer is here