Подтвердить что ты не робот

Жизненный цикл Android и устройство блокировки/разблокировки

Я только обнаружил, что когда на устройстве включен экран блокировки, происходит следующее. Для этого действия в манифесте устанавливается андроид: screenOrientation = "landscape". Затем я выполняю следующие действия с моим телефоном в портретном режиме.

  • Пользователь открывает активность.
  • onCreated() называется
  • onStart() называется
  • onResume() называется
  • Пользователь ЗАПИСИТ устройство 4.5 onPause вызывается()
  • onDestroy() называется
  • onCreate() называется
  • onStart() называется
  • onResume() называется 8.5 onPause вызывается()
  • Пользователь НЕ УДАЛЯЕТ устройство
  • onResume() называется
  • onDestroy() называется
  • onCreate() называется
  • onStart() называется
  • onResume() вызывается.

Хорошо, я не понимаю, почему 6,7,8 выполняются после того, как экран погас.. Также я не понимаю, почему выполнены 11, 12, 13, 14. Нужны ли какие-то странные вещи, когда я блокирую и разблокирую устройство? Я внезапно смущен жизненным циклом деятельности. Может ли кто-нибудь прояснить это?

Прикрепите код и журнал сообщений

package com.example.wf;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("log", "oncreate");   
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("log", "onresume");
    };

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("log", "onstart");
    };

    @Override
    protected void onPause() {
        super.onStart();
        Log.d("log", "onpause");
    };

    @Override
    protected void onDestroy() {
        Log.d("log", "ondestroy");      
        super.onDestroy();
    };
}

Журнал сообщений

10-05 23:11:07.994: D/log(23810): oncreate
10-05 23:11:07.994: D/log(23810): onstart
10-05 23:11:07.994: D/log(23810): onresume
// LOCK DEVICE
10-05 23:11:19.957: D/log(23810): ondestroy
10-05 23:11:20.007: D/log(23810): oncreate
10-05 23:11:20.007: D/log(23810): onstart
10-05 23:11:20.007: D/log(23810): onresume
// UNLOCK DEVICE
10-05 23:11:57.407: D/log(23810): onresume
10-05 23:11:57.537: D/log(23810): ondestroy
10-05 23:11:57.587: D/log(23810): oncreate
10-05 23:11:57.587: D/log(23810): onstart
10-05 23:11:57.587: D/log(23810): onresume
4b9b3361

Ответ 1

На телефонах (или планшетах с ориентацией заблокирован портрет) экран блокировки только для портрета. Поэтому, когда устройство заблокировано, устройство автоматически переключается в портретный режим (вызывая 6, 7, 8 и 9). Когда устройство разблокировано, тогда onResume() вызывается, когда ваш Activity становится видимым, но вы снова переходите между портретом и теперь заблокированы в ландшафте, поэтому активность уничтожается и воссоздается в ландшафте.

Ответ 2

Чтобы перейти к сценарию повторного создания активности, вы можете обрабатывать изменения конфигурации на уровне активности файлом манифеста android с помощью атрибута android: configChanges = "orientation".