Следующий рабочий код запускается в BroadcastReceiver, который принимает широковещательную передачу BOOT_COMPLETED.Прозрачный вид наложения «отпадает» от Window Manager?
//Create a transparent, untouchable view and attach it to the system-level Window Manager
//We will force this overlay into Landscape orientation.
final View view = new View(context);
int dimension = 0;
int pixelFormat = PixelFormat.TRANSLUCENT;
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
dimension, dimension,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
pixelFormat);
params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
wm.addView(view, params);
Это предназначено, чтобы заставить устройство в ландшафтном режиме для специализированного использования (не будет развернут на Android рынке. Это могут быть использованы только на моих устройствах.)
Моя проблема заключается в том, что иногда наложение исчезнет. Кажется, не существует конкретной причины. Это происходит из приложений, или иногда, казалось бы, случайным образом. Это возвращает его в портретный режим и вызывает проблемы.
Есть ли способ, которым я могу либо предотвратить это, либо следить за ним, и снова подключить представление, когда это произойдет?
Целевое устройство работает под управлением 4.0.3
Спасибо, я попробую метод onDetachedFromWindow(). –
Метод onDetachedFromWindow() не работал для меня, потому что приложение было остановлено в любом случае, но ваше предложение об использовании сервиса, похоже, действительно сделало трюк. Отмечено как принятый ответ. Спасибо. :) –