Android активность открывается дважды при запуске с экрана блокировки - PullRequest
2 голосов
/ 05 марта 2020

Привет, ребята, на прошлой неделе я попробовал себя в разработке android, и в настоящее время я застрял в следующей ошибке: Я запускаю таймер с сервисом в фоновом режиме. Когда время истекло, активность должна открыться, даже когда телефон заблокирован. Со следующим кодом, пока не заблокировано, все в порядке .. Но при открытии с заблокированного экрана он всегда открывается дважды ..: /

Я добавил это в onCreate, чтобы открыть с экрана блокировки.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //allow window to be popped up while in lock screen
    Window window = this.getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    setContentView(R.layout.activity_entry);

И я открываю активность из службы через намерение.

    callEntryActivityIntent = new Intent(this, EntryActivity.class);
    callEntryActivityIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    pendingIntent = PendingIntent.getActivity(this, 0, callEntryActivityIntent, 0);

, а когда таймер завершен -> startActivity (callEntryActivityIntent);

возможно у кого-то есть идея. Я действительно новичок в разработке android, начавшейся за две недели go.

1 Ответ

0 голосов
/ 10 марта 2020
I am new too, but I guess **android activity cycle** has an answer:
+ The user opens an activity.
       - onCreated() is called
       - onStart() is called
       - onResume() is called  
+ The user LOCKS the device 
       - onPause() is called
       - onDestroy() is called
       - onCreate() is called
       - onStart() is called
       - onResume() is called 
       - onPause() is called   
+ The user UNLOCKS the device
       - onResume() is called
       - onDestroy() is called
       - onCreate() is called
       - onStart() is called
       - onResume() is called.

Hope this helps
...