Я новичок в программировании для Android и хотел бы прояснить концепцию Activity Lifecycle.
Для простоты я сократил регистр, как показано ниже:
Есть 2 действия (MainActivity и Main2Activity).
В MainActivity создается кнопка для открытия Main2Activity.
В Main2Activity для имитации возврата пользователя в MainActivity после отображения Main2Activity вызывается метод finish () и выполняется возврат к MainActivity в onCreate ().
Когда кнопка нажата, я обнаружил, что, похоже, произошло состояние гонки.
- MainActivity :: onCreate () <- 1-й экземпляр MainActivity </li>
- MainActivity :: onStart () <- 1-й экземпляр MainActivity </li>
- MainActivity :: onResume () <- 1-й экземпляр MainActivity </li>
- MainActivity :: onPause () <- 1-й экземпляр MainActivity </li>
- MainActivity :: onCreate () <- 2-й экземпляр MainActivity </li>
- MainActivity :: onStart () <- 2-й экземпляр MainActivity </li>
- MainActivity :: onResume () <- 2-й экземпляр MainActivity </li>
- MainActivity :: onStop () <- 1-й экземпляр MainActivity </li>
- MainActivity :: onDestroy () <- 1-й экземпляр MainActivity </li>
Последний onDestory () из 1-го экземпляра MainActivity будет запускаться после onCreate (), onStart (), onResume () из 2-го экземпляра MainActivity.
Как я могу убедиться, что onDestroy () вызывается перед началом другого действия?
Большое спасибо всем за помощь.
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btnClick = findViewById(R.id.btnClick);
btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// finish self
finish();
// start Main2Activity
Intent intent = new Intent(v.getContext(), Main2Activity.class);
startActivity(intent);
}
});
}
Main2Activity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
// return to MainActivity
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
// finish self
finish();
}