Я пытаюсь создать приложение для блокировки детей. Приложение, которое в основном позволяет добавить блокировку от детей со списком разрешенных приложений для использования ребенком.
Большинство компонентов завершено. Я застрял на одном конкретном этапе.
В режиме блокировки, если пользователь (ребенок) нажимает клавишу «Домой», я могу перехватить клавишу «Домой» и перезапустить экран режима блокировки, в котором содержится список приложений, к которым можно получить доступ.
Проблема заключается в задержке (около 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