Por que não pode ser invocado o onResume () após os métodos onRestart () e onCreate (), excluindo apenas onStart ()? Qual é seu propósito?
OK, como minha primeira resposta foi bem longa, não vou estendê-la ainda mais, então vamos tentar isso ...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
ATENÇÃO: Eu deliberadamente deixei de lado as chamadas para coisas como super.onCreate(...)etc. Isso é pseudo-código, então me dê uma licença artística aqui. ;)
Os métodos para DriveToWorkActivityseguir ...
protected void onCreate(...) {
openGarageDoor();
unlockCarAndGetIn();
closeCarDoorAndPutOnSeatBelt();
putKeyInIgnition();
}
protected void onStart() {
startEngine();
changeRadioStation();
switchOnLightsIfNeeded();
switchOnWipersIfNeeded();
}
protected void onResume() {
applyFootbrake();
releaseHandbrake();
putCarInGear();
drive();
}
protected void onPause() {
putCarInNeutral();
applyHandbrake();
}
protected void onStop() {
switchEveryThingOff();
turnOffEngine();
removeSeatBeltAndGetOutOfCar();
lockCar();
}
protected void onDestroy() {
enterOfficeBuilding();
}
protected void onReachedGroceryStore(...) {
Intent i = new Intent(ACTION_GET_GROCERIES, ..., this, GroceryStoreActivity.class);
}
protected void onRestart() {
unlockCarAndGetIn();
closeDoorAndPutOnSeatBelt();
putKeyInIgnition();
}
OK, então é outra longa (desculpe pessoal). Mas aqui está a minha explicação ...
onResume()é quando eu começo a dirigir e onPause()é quando eu paro temporariamente. Então eu dirijo e chego a um sinal vermelho, então paro ... a luz fica verde e eu recomeço. Outra luz vermelha e eu paro, depois verde, para continuar. O onPause() -> onResume() -> onPause() -> onResume()ciclo é apertado e ocorre muitas vezes ao longo da minha jornada.
O loop de parar novamente através de um reinício (preparando-se para continuar minha jornada) e começar de novo é talvez menos comum. Em um caso, localizo a mercearia e ela GroceryStoreActivityé iniciada (forçando- DriveToWorkActivitya a ponto de onStop()). Quando volto da loja, passo onRestart()e retomo onStart()minha jornada.
Eu poderia colocar o código que está onStart()dentro dos dois onCreate()e sem onRestart()me preocupar em substituir onStart(), mas quanto mais isso precisa ser feito entre onCreate() -> onResume()e onRestart() -> onResume(), mais estou duplicando as coisas.
Então, para cotar mais uma vez ...
Por que não pode ser invocado o onResume () após os métodos onRestart () e onCreate (), excluindo apenas onStart ()?
Se você não substituir onStart(), é efetivamente o que acontece. Embora o onStart()método de Activityseja chamado implicitamente, o efeito no seu código é efetivamente onCreate() -> onResume()ou onRestart() -> onResume().