onCreate メソッドでバイブレーター システム サービスを開始するアクティビティがあり、ユーザーがボタンを押すとバイブレーターがキャンセルされ、finish() が呼び出されてアクティビティが閉じます。
このアクティビティは AlarmManager を介して起動されるため、閉じられると、ユーザーは現在開いているアプリ (必ずしも私のものではない) に戻ります。
私が抱えている問題は、アクティビティが横向きモードであり、アクティビティが閉じたときに横向きをサポートしていない画面 (ホーム画面など) にユーザーが移動した場合、アプリケーションが縦向きに切り替わり、 onCreate( ) 実際に画面を閉じる前に。したがって、この問題を引き起こす手順は次のとおりです...
- アクティビティは縦向きモードで起動されます
- onCreate メソッドが呼び出され、バイブレーターが開始されます
- ユーザーが電話を横向きに回転させます
- onCreate が再度呼び出されますが、onSaveInstanceState が null ではないため、バイブレーターの再起動をスキップできます
- ユーザーがボタンを押して画面を閉じる
- vibrator.cancel() を呼び出します
- 私はfinish()を呼び出します
- ユーザーが横向きモードをサポートしていない画面に戻るため、私のアクティビティは onCreate() を呼び出します
- savedInstanceState equals null, so the vibrator gets started again
- My app is closed with the vibrator still running
Currently the only way I can think of to rectify this is to make my activity only support portrait mode, but I'd like to avoid that if I can. Does anyone know a way in which I can prevent onCreate() from being called after I call finish()?