2015-09-28 14 views
5

ho avuto un problema per alcuni giorni per capire questo problema. Fondamentalmente ho un Webview che carica un sito Web, con la prima pagina come login e il contenuto segue dopo il login.Webview non sta ripristinando lo stato dopo che è stato ucciso dall'utente

Ogni convalida utente viene effettuata tramite il sito stesso. Quindi non c'è nulla da salvare in un SharedPreference per esempio. Im solo utilizzando l'url in questo scenario.

così viaCrea dopo aver ucciso la mia app, la webview non sta ripristinando lo stato precedente prima che venisse uccisa.

Suppongo che sia perché il savedinstancestate sta arrivando a zero e sta caricando di nuovo l'URL dopo che l'app è stata uccisa.

Ho i cookie di sessione e altre cose.

mi stavo chiedendo se qualcuno ha qualche suggerimento.

p.s.Sono nuovo in Android.

risposta

5

Come lei stesso ha sottolineato poiché lo stato salvato è nullo, non è possibile che onCreate possa riportare la propria webview all'ultima pagina aperta. Ci sono due cose che devi fare:

Assicurati che la tua pagina di accesso, che è la tua prima pagina, reindirizzi a una pagina di contenuto pertinente quando rileva che l'utente ha già effettuato l'accesso. Poiché stai già usando i cookie questo è banale

Quindi utilizzare il metodo onPause per salvare l'URL corrente di WebView.

@Override 
protected void onPause() { 
    super.onPause(); 
    SharedPreferences prefs = context.getApplicationContext(). 
      getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE); 
    Editor edit = prefs.edit(); 
    edit.put("lastUrl",webView.getUrl()); 
    edit.commit(); // can use edit.apply() but in this case commit is better 
} 

Poi si può leggere questa proprietà sul metodo onCreate e caricare l'URL in base alle esigenze. Se la preferenza è definita carico, se non caricare la pagina di login (che dovrebbe reindirizzare alla prima pagina di contenuto se già loggato)

UPDATE ecco che cosa il vostro onResume potrebbe essere simile. Aggiunta anche una riga al metodo onPause() sopra.

@Override 
protected void onResume() { 
    super.onResume(); 
    if(webView != null) { 
     SharedPreferences prefs = context.getApplicationContext(). 
      getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE); 
     String s = prefs.getString("lastUrl",""); 
     if(!s.equals("")) { 
      webView.loadUrl(s); 
     } 
    } 
} 
+0

Grazie mille per la risposta! Ha funzionato ! –

+0

siete i benvenuti. – e4c5

+0

Il codice funziona, ma ricarica anche WebView ogni volta che ritorni ad esso da un'altra app o lo uccidi e lo apri di nuovo. Come posso smettere? – sidyapa

Problemi correlati