[Resolvido]Abrir a mesma activity anterior ao reabrir o app

Boa dia, gostaria de uma ajuda de como poderia memorizar a activity que estava aberta anteriormente e abrir a mesma activity quando reaberto o app.

Por exemplo, tenho 2 activity principais, se eu encerrar o app com aquela activity aberta, e entao reabrir o app, gostaria de inciar o app com a activity de anteriormente aberta, independente de qual for a activity principal setada no androidManifest.xml.

1 curtida

Sugestão simples: armazenar a última activity num arquivo de preferences e, ao abrir o app, a activity principal (que seria como um splashscreen) consulta esse preferences e reabre a activity desejada.

Abraço.

2 curtidas

So uma duvida em questão a preferences, eu uso ele pra guardar alguns dados, os dados que salvo em uma activity por meio desse codigo de exemplo


SharedPreferences settings = getPreferences(PREFS_NAME,0);
preferences.Editor editor = settings.edit();

editor.putString("Nome","paulo");

editor.commit();

Depois de salvo,eu conseguiria acessa lo globalmente? isso em qualquer activity?

1 curtida

Fala Igor,

O melhor a se fazer pra acessa lo globalmente no seu app é salvar no banco local SQLITE.

Eu uso uma LIB muito boa pra trabalhar com o banco local, chama se CupBoard, segue o link:
https://bitbucket.org/littlerobots/cupboard

Existem vários tutoriais sobre ele na internet.

Abraços.

Utilize uma tabela no banco SQLite com uma coluna chamada ultimaActivity, quando o usuário abrir uma Activity você guarda o nome dela no banco, assim, quando fechar o sistema, sempre terá o nome da última tela aberta, aí basta fazer uma verificação no main, de qual activity abrir quando iniciar o sistema.

1 curtida

Ola, resolvi com SharedPreferences, funcionou corretamente.

Para fazer utilizei uma classe sem activity de xml referenciada,aonde tenho uma variavel inteira chamada activityInicializador, que sera utilizada para informar qual activity iniciar.

Para o metodo onCreate tenho uma função do SharePreferences que busca se ha na aplicação alguma variavel inteira com a key descrita como “inicializar”, se houver algo, ira setar o valor da variavel activityInicializador com essa variavel inteira armazenada,se não ira setar por defalt o valor nº 1.

Entao em cada activity, em seu metodo onPause ou onStop, seto uma função para guardar um numero desejado que ira representar a activity atual.

Aqui esta o codigo feito, mais tarde posto o projeto que apliquei essa função.

Classe inicializadora


public class Inicializador extends Activity {
 int activityInicializador;
 public static final String PREFS_NAME_CLOSE = "inicializador";
 
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  SharedPreferences configInicializador = getSharedPreferences(PREFS_NAME_CLOSE, MODE_PRIVATE);
  activityInicializador = configInicializador.getInt("inicializar",1);
  
  if (activityInicializador == 1) {
   Intent modoBotoes = new Intent(this, Tela1.class);
   startActivity(modoBotoes);
   finish();
  } 
  else if(activityInicializador == 2) {
   Intent modojoystick = new Intent(this, Tela2.class);
   startActivity(modojoystick);
   finish();
  }
 }
}.

Antes de encerrar a activity e passa para outra tela, damos um save com SharedPreferences com o numero que representara a activity,

Segue o exemplo do codigo.

Tela 1


SharedPreferences configInicializador = getSharedPreferences(PREFS_NAME_CLOSE, MODE_PRIVATE);
		SharedPreferences.Editor editorInicializador = configInicializador.edit();
		
		editorInicializador.putInt("inicializar", 1);
		editorInicializador.commit();

Tela 2

SharedPreferences configInicializador = getSharedPreferences(PREFS_NAME_CLOSE, MODE_PRIVATE);
		SharedPreferences.Editor editorInicializador = configInicializador.edit();
		
		editorInicializador.putInt("inicializar", 2);
		editorInicializador.commit();

Apenas isso.

Mas já que o pessoal cito SQL como alternativa, qual seria a diferença?

1 curtida