Это странный вариант.FLAG_KEEP_SCREEN_ON работает в обратном порядке
Я был ранее с помощью: android:keepScreenOn="true"
в моем файле макета, чтобы держать экран на в деятельности, и это работало нормально.
Однако я хотел улучшить, чтобы экран сохранялся только тогда, когда веб-приложение находится в определенном состоянии. (Пользователь должен по-прежнему иметь возможность отключить экран, если он пожелает, я просто хочу отключить тайм-аут - что выше в файле макета достигает всякий раз, когда актив активен.)
Для этого у меня есть Интерфейс JavaScript добавляет к WebView
, который боксирует следующие два метода.
Я прокомментировал настройку keepScreenOn
в макете.
@JavascriptInterface
public void keepScreenOn(){
Toast.makeText(mContext, "Keeping screen on", Toast.LENGTH_LONG).show();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@JavascriptInterface
public void allowScreenOff(){
Toast.makeText(mContext, "Allowing screen off", Toast.LENGTH_LONG).show();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Теперь правильно Toast
отображается, но «держать экран на» действия наоборот.
i.e, когда я получаю Toast
, говоря, что на экране будет храниться тайм-аут и переключатели через пару минут. НО, когда я получаю Toast
, говоря, что на экране будет разрешено отключать экран, на самом деле он остается включенным, даже не выставляя время.
Я не понимаю, как это может быть.
ОК, участок утолщается.
Кажется, это не всегда может быть поворот операции, но может быть случайной работой/нерабочей ситуацией.
Кроме того, глядя в журнал в Android Studio, я получаю сообщение об ошибке, которая говорит:
01-26 20:22:51.358 2182-5629/com.nooriginalthought.bluebadgeparking E/ViewRootImpl: com.nooriginalthought.bluebadgeparking.websiteViewActivity : Only the original thread that created a view hierarchy can touch its views.
при вызове метода.
НО, но он действительно работает.
Методы, показанные выше, находятся в пределах класса websiteViewActivity, но не входят в метод onCreate. Боюсь, я не знаю, является ли это актуальным или как обеспечить, чтобы addFlags
и clearFlags
выполнялись в правильной теме, если это имеет значение.
[Edit: This question объясняет, как получить вещи, работающие в потоке пользовательского интерфейса и избавилась от «Только оригинальная тема» ошибки.]
А почему она иногда работает (я не могу сказать, ошибка появляется в журнале, когда она работает или нет, поскольку я видел, как она работает при тестировании от моего ПК)?
Я в настоящее время тестирования затруднительного runOnUIthread на посте подкладки в моем редактировании, чтобы увидеть, если это решит проблему оригинальной (а не только ошибка). Пока ничего хорошего. –
Вопрос, связанный в моем редактировании (который имеет то же решение, что и ответ GeNia), разрешил проблему. Я все еще не знаю, почему я видел такое странное поведение, но вместо того, чтобы просто не работать. –