我的主要活动有一些代码,可以进行一些不应该被中断的数据库更改.我正在另一个线程中进行繁重的工作,并使用我设置为不可取消的进度对话框.但是,我注意到如果我旋转手机,它会重新启动对正在运行的进程非常不好的活动,并且我会收到强制关闭.
我想要做的是以编程方式禁用屏幕方向更改,直到我的进程完成,此时方向更改已启用.
我有以下代码.
Java的
public void lockScreenOrientation() {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
}
public void unlockScreenOrientation() {
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
我从javascript调用这些函数.控制正在进入这些方法.但是方向未锁定.
我试过跟随锁定方向
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
这些似乎都不起作用.任何指针都会有所帮助.
我们的相机拍摄需要大约10-15秒(由于自定义相机硬件).我需要的是在10-15秒的这个过程中,我不希望用户改变屏幕方向.
我已将takepicture调用放在Async任务的doInBackground中.
在我放置的onPreExecute()方法中
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
在onPostExecute我放了
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
此解决方案对我不起作用,导致相机和设备崩溃,我不得不重新启动设备.
android screen-orientation cameracapturetask android-4.2-jelly-bean
当我的主要活动在启动屏幕之后启动时,它会分析4个大的XML文件.这需要几秒钟,我可以在启动时显示启动画面时隐藏它.
但是当屏幕方向改变时或者当我在子活动之后返回主活动时它再次解析,因此我的应用程序"挂起"几秒钟并且它在那段时间内没有响应或任何响应.
我知道这是Android中的正常行为,但有没有办法避免这种情况?
我读了一些关于savedinstancestate的内容,但我似乎无法理解这些文档.
我正在开发一个应用程序现在我想要锁定整个应用程序的所有布局..所有布局的设置方向是不可能的,因为我至少有50到60个布局.有没有办法为整个应用程序设置方向请帮助..谢谢