Sono perplesso su questo comportamento che sto vivendo in un'applicazione Sto sviluppando ...dati intento non di compensazione quando l'utente preme il pulsante di allora recenti applicazioni pulsante
breve:
dati intento non è svuotare quando l'utente preme il pulsante Indietro per uscire dall'applicazione e quindi preme il pulsante recente per reinserire l'applicazione. (Ogni altro caso, i dati intento è sgomberato)
lungo:
Ho un'applicazione con una schermata iniziale che viene utilizzato per raccogliere i dati che viene passato in da uno schema URI. Ho quindi impostato l'intenzione di inoltrare i dati all'attività principale. L'attività principale ha frammenti e si basa sul modello principale/dettaglio.
I dati di intenti vengono cancellati in tutti i casi, ad esempio premendo il pulsante Home e quindi tornando all'applicazione, premendo il pulsante delle app recenti e quindi tornando all'applicazione, ecc. L'unico caso in cui i dati dell'intento non viene cancellato quando l'utente preme il pulsante Indietro e quindi il pulsante delle app recenti per tornare all'applicazione.
frammenti di codice rilevanti che coinvolgono gli intenti:
// Splash Screen Activity
@Override
protected void onPostExecute(Void result) {
// Data is done downloading, pass notice and app ids to next activity
Intent intent = new Intent(getBaseContext(), ListActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("id1", id1);
intent.putExtra("id2", id2);
intent.putExtra("id3", id3);
startActivity(intent);
finish();
}
// ListActivity retrieving intent data
Intent intent = getIntent();
if (intent != null) {
this.id1 = intent.getExtras().getString("id1");
this.id2 = intent.getExtras().getString("id2");
this.id3 = intent.getExtras().getString("id3");
}
// ListActivity clearing intent data
@Override
public void onPause() {
super.onPause();
// Clear intent data
Intent intent = getIntent();
intent.putExtra("id1", "");
intent.putExtra("id2", "");
intent.putExtra("id3", "");
}
voglio sottolineare che ho anche provato ad utilizzare intent.removeExtra ("ID1"), ma anche questo non ha funzionato.
Qualche idea su cosa sta succedendo? È come se Android mantenesse il vecchio intento anche se onPause() viene sempre chiamato per cancellare i dati di intent.
Non utilizzo l'intento di salvare lo stato dell'applicazione. L'intento è principalmente utilizzato per trasmettere i dati ricevuti da uno schema Uri personalizzato che viene utilizzato per avviare la mia app. Lo schema Uri contiene un ID che viene recuperato nella schermata iniziale e quindi passato alla listività come si vede nel codice sopra. Ho anche provato setIntent (intento) e setIntent (null) ma questo non risolve il problema. – michaelcarrano
Il codice che hai mostrato si confonde con l'intento in 'ListActivity'. Perché lo stai facendo? Se stai usando gli extra per passare alcuni parametri dalla tua schermata iniziale a 'ListActivity', non dovresti provare a cancellarli da 'Intent'. Dovrai mostrare più codice se vuoi aiutare a risolvere questo problema. –