Жизненный цикл 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
Ответы
Ответ 1
На телефонах (или планшетах с ориентацией заблокирован портрет) экран блокировки только для портрета. Поэтому, когда устройство заблокировано, устройство автоматически переключается в портретный режим (вызывая 6, 7, 8 и 9). Когда устройство разблокировано, тогда onResume()
вызывается, когда ваш Activity
становится видимым, но вы снова переходите между портретом и теперь заблокированы в ландшафте, поэтому активность уничтожается и воссоздается в ландшафте.
Ответ 2
Чтобы перейти к сценарию повторного создания активности, вы можете обрабатывать изменения конфигурации на уровне активности файлом манифеста android с помощью атрибута android: configChanges = "orientation".