Как запустить / отобразить временный экран при нажатии кнопки домой [ссылка включена] - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь создать приложение для блокировки детей. Приложение, которое в основном позволяет добавить блокировку от детей со списком разрешенных приложений для использования ребенком.

Большинство компонентов завершено. Я застрял на одном конкретном этапе. В режиме блокировки, если пользователь (ребенок) нажимает клавишу «Домой», я могу перехватить клавишу «Домой» и перезапустить экран режима блокировки, в котором содержится список приложений, к которым можно получить доступ.

Проблема заключается в задержке (около 5-7 секунд) между нажатием кнопки «Домой» и повторным запуском моей активности.

В течение этого периода задержки пользователь (дочерний элемент) может получить доступ к приложениям, которые не заблокированы. Я пытаюсь избежать этой задержки.

В процессе поиска возможного решения вышеуказанной проблемы, я случайно упомянул существующее приложение - «KIDZ ZONE».

Это конкретное приложение рисует пользовательский интерфейс / экран с гораздо меньшей задержкой, около 1 секунды. Я пытаюсь понять, как это можно воспроизвести.

Любые предложения будут оценены!

Возможные способы, которыми я воспользовался, - запуск события трансляции и вызов той же активности. Это работает, но с задержкой в ​​5-7 секунд, которую я хочу минимизировать.

MainActivity -

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        InnerRecevier innerReceiver = new InnerRecevier();
        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        registerReceiver(innerReceiver, intentFilter);

    }

Приемник вещания -

public class InnerRecevier extends BroadcastReceiver {

    final String SYSTEM_DIALOG_REASON_KEY = "reason";
    final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";

    @Override
    public void onReceive(final Context context, Intent intent) {
        String action = intent.getAction();
        if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {
            String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
            if (reason != null) {
                if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {

                    Intent i=new Intent(context.getApplicationContext(),MainActivity.class);
                            i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            context.startActivity(i);
                }
            }
        }
    }
}

Я пытаюсь уменьшить задержку, вызванную нажатием кнопки «Домой» и повторным запуском упражнения. Прикрепите файл gif, чтобы показать, как справочное приложение обрабатывает ожидаемое решение.

Reference - https://imgur.com/ME1dkQP.gif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...