С ключом безопасности активный переход между действиями странный
У меня есть основное занятие A, и когда пользователь нажимает кнопку, я открываю другое действие B. Но когда это происходит, B не просто появляется сверху A:
- А исчезает
- защищенный keyguard обнаруживается
- B появляется
И когда я избавляюсь от Б, происходит то же самое. Это раздражает, потому что на экране много мерцаний без реальной цели. Есть ли какой-нибудь способ добиться прямого перехода от А к В, пока активна клавиатура, не объединяя 2 действия в 1?
Вот что я делаю в onCreate для обоих видов деятельности:
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
И вот как я начинаю свою деятельность:
final Intent intent = new Intent(Sand.this, EditRule.class);
intent.putExtra(DB.KEY_PARENT_ID, id);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivityForResult(intent, 0);
overridePendingTransition(0, 0);
Я также попытался установить пустой андроид:windowAnimationStyle в теме деятельности, но не повезло.
ОБНОВЛЕНИЕ: я отправил эту ошибку: https://code.google.com/p/android/issues/detail?id=68465&thanks=68465&ts=1397301860
Спасибо, Тео
1 ответ
Я много лет назад изучал это (с парой других инженеров) на ICS и JB. Не было возможности избежать мерцания, которое, я сильно подозреваю, все еще имеет место в KitKat. Вы должны подать эту ошибку.
(Если вы посмотрите на источник, связанный с Keyguard в Android, то это довольно.. огромная масса кода / политики, пронизанная особыми случаями. Так как этот случай явно нигде не задокументирован, даже если вы можете заставить его работать на одной версии Я бы не стал полагаться на то, что он работает последовательно.)
В конечном счете, мы решили эту проблему, объединив все наши пользовательские интерфейсы блокировки экрана, которые не должны мерцать. Это было неприятно, но это сработало.