Pergunta

Eu tenho duas atividades em execução: MainActivity e childActivity . Sempre que o usuário clica no botão em MainActivity , o childActivity é lançado. O que eu quero fazer é esta:

Quando a atividade ativo é a childActivity e o usuário clicar no botão home, em seguida, reiniciar o aplicativo , eu quero ver o childActivity < strong> em vez de MainActivity , que é lançado.

Eu tive algumas sugestões realmente trabalham arounds. Tentei manipular onStart, onRestart, onResume, onStop, eventos OnDestroy. Mas, eles não resolve totalmente o problema. Deve haver uma maneira inteligente lá fora. Obrigado.

Editar:

Obrigado pela resposta, Soonil. O caso você disse está acontecendo quando a atividade é chamada a partir da janela atividades recentes. (A janela aberta quando você longa pressione o botão home) No entanto; Isso não está acontecendo quando você abri-lo a partir da tela casa. (Como abertura do início) eu não acho que meu código tem um problema específico para gerar este erro. Porque, eu criei um projeto de teste e tentou autônomo antes de enviar a questão e enfrentou o mesmo problema. De qualquer forma, aqui está o código de teste:

public class MainActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle("MainActivity");

        ((Button) findViewById(R.id.btnChildActivity)).setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        startActivity(new Intent(this, ChildActivity.class));
    }

}

public class ChildActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        this.setTitle("ChildActivity");

    }
}
Foi útil?

Solução

Editar : encontrado a solução para o seu problema um tanto aleatoriamente hoje! Veja este relatório de erro . Ele explica seu problema exatamente. A razão que eu não poderia reproduzir o problema é que eu nunca ter Eclipse lançar um aplicativo diretamente. Eu uso o Eclipse para instalar o aplicativo e, em seguida, iniciá-lo eu mesmo.


Este já é o comportamento padrão para aplicativos do Android, sem truques especiais são necessários para alcançar este objectivo. Estou surpreso sua aplicação não está demonstrando esse comportamento. Cada aplicativo Android mantém uma pilha de atividades, literalmente uma pilha LIFO de atividades. Essas atividades podem ainda ser agrupados em tarefas, mas 99% dos aplicativos mundanas não vai precisar saber nada sobre tarefas em minha experiência.

Quando você pressiona o botão home, toda a pilha de aplicativos é colocado em segundo plano. Enquanto no fundo, ele pode ser morto por questões de memória a qualquer momento, mas se não muito decorre de tempo antes de ser restaurado, geralmente não é morto e não tem de ser recriada. Ao selecionar o aplicativo novamente, a pilha (ou mais precisamente, apenas o item do topo da pilha) é restaurada.

Se o seu aplicativo não está exibindo esse comportamento, eu suspeito que tem algo a ver com a forma como você está começando a MainActivity e childActivity e quaisquer bandeiras Intenção extras que você pode estar usando. Qualquer chance que você pode postar trechos de código sobre como você está começando a MainActivity e childActivity?

Outras dicas

Voltei e testado com um pedido semelhante, e mesmo quando o processo é forçado a sair da memória ChildActivity é reconstituído automaticamente como diz Soonil. Você está vendo isso no emulador ou em um dispositivo real?

Se você executar seu aplicativo e relógio logcat, você deve ver algo como o seguinte depois de lançar seu aplicativo, em seguida, abrir o ChildActivity e clique em Página inicial e, em seguida, lançar sua atividade novamente:

atividade de início: Intenção {action = android.intent.action.MAIN categorias = {} android.intent.categroy.LAUNCHER flags = ... comp = {com.yourpackagename.MainActivity}} Iniciar proc para yourpackagename.ChildActivity atividade: PID = x uid = y gids = {} Exibida /.ChildActivity atividade

Você poderia postar a saída do logcat quando você não ver o comportamento que você espera?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top