Domanda

ho un tabhost con alcune schede e ogni scheda implementato il metodo onResume, perché ho bisogno di ricaricare tutti i dati da un database remoto ogni volta che l'utente entra di nuovo in un tabhost, non solo la prima volta che lo apre .

ok, funziona bello, ma il problema è che quando l'utente apre per la prima volta una scheda, i due metodi, onCreate e onResume sono chiamati, quindi, la mia app di connessione due volte nel database per recuperare le informazioni. ... voglio solo per essere chiamato onCreate quando l'utente entra per la prima volta nella tabhost

Come evitare questo problema rara?

È stato utile?

Soluzione

Come indicato sul attività del ciclo di vita docs , onCreate e onResume sarà sempre sia chiamato la prima volta che si avvia un'attività. Quando si va di nuovo a Attività, almeno onResume saranno chiamati, ma onCreate possono essere chiamati ancora una volta se Android necessaria per liberare risorse.

Se è necessario l'impostazione a verificarsi ogni volta che si torna all'attività, perché non solo mettere la logica in onResume?

Altri suggerimenti

Dato che i contenuti le schede sono attività, poi entrambi hanno da creare (e ripresa) quando si avvia l'applicazione.

Un modo per evitare questo, è quello di utilizzare una vista, invece di attività come il contenuto scheda. In questo modo, hai solo 1 metodo onCreate() perché hai solo 1 attività (il TabActivity).

Sono d'accordo con altri manifesti che si dovrebbe ri-factor vostra applicazione. non si può semplicemente aspettare di attaccare una sola attività basamento in una scheda e hanno tutto un senso.

Detto questo, si potrebbe avere un qualche flag che indica se il DB ha bisogno di inizializzazione. in onResume di ogni attività (), si ha qualcosa di simile,

synchronized (MyLock.class) {
    if (!initialized) {
      initDb();
      MyLock.initialized = true;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top