С ключом безопасности активный переход между действиями странный

У меня есть основное занятие 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, то это довольно.. огромная масса кода / политики, пронизанная особыми случаями. Так как этот случай явно нигде не задокументирован, даже если вы можете заставить его работать на одной версии Я бы не стал полагаться на то, что он работает последовательно.)

В конечном счете, мы решили эту проблему, объединив все наши пользовательские интерфейсы блокировки экрана, которые не должны мерцать. Это было неприятно, но это сработало.

Другие вопросы по тегам