私のメイン アクティビティには、中断してはならないデータベース変更を行うコードがあります。別のスレッドで重い処理を行っており、キャンセル不可に設定した進行状況ダイアログを使用しています。しかし、携帯電話を回転させるとアクティビティが再起動され、実行中のプロセスにとって非常に悪い結果となり、強制終了が発生することに気付きました。
私がやりたいのは、プロセスが完了するまで画面の向きの変更をプログラムで無効にして、プロセスが完了したら向きの変更を有効にすることです。
ベストアンサー1
クリスが説明したように自己回答、呼び出し
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
その後
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
実際のデバイスでは本当にうまく機能します。
エミュレータでテストしているときに壊れているとは思わないでください。ctrl+F11 ショートカットは、センサーの動きをエミュレートせずに、常に画面の向きを変更します。
編集: これは最善の回答ではありませんでした。コメントで説明されているように、この方法には問題があります。本当の答えはここにあります。