2013-05-30 17 views
7

Ho due attività, una è la SplashActivity e l'altra è MainActivity, un'attività contenente una visualizzazione Web.Come avviare un'attività in background e mostrarla in seguito?

È necessario caricare la visualizzazione Web quando viene visualizzata la schermata iniziale. Quindi sto cercando un modo per caricare MainActivity in background in SplashActivity::onCreate();

Se l'intenzione viene richiamata direttamente, MainActivity viene immediatamente portato in primo piano e bloccato nella visualizzazione Web.

Ho cercato un sacco di soluzioni su splash screen come this . Tuttavia non inizializzano MainActivity fino allo scadere del tempo di splash.

+0

Si può provare a utilizzare animazione che mostra il mainactivity in ritardo di alcuni millisecondi ... – amalBit

+3

Si potrebbe lanciare il MainActivity prima e avviare lo SplashActivity a onCreate () di MainActivity. Dopo la durata richiesta, puoi semplicemente chiudere SplashActivity e MainActivity riappare in modo che appaia come se avessi avviato Main da Splash. – user1721904

+0

@ user1721904 Sì, penso che l'idea dovrebbe funzionare. Tuttavia, potresti fornire maggiori dettagli in merito? Dite, dovrei usare 'finish()' per fermare SplashActivity? o dovrei usare intenzione di avviarlo? Inoltre, per favore scrivilo come risposta.THX – SolessChong

risposta

5

Le app Android possono memorizzare nella cache i dati web. puoi usarlo a tuo vantaggio. (e ha funzionato per me). Cosa ho fatto:

  • Ho creato una visualizzazione Web nella schermata iniziale.
  • non è stato collegato all'interfaccia utente,
  • richiesto la pagina Web di cui avevo bisogno nell'attività principale.
  • dopo aver caricato la WebView nella schermata iniziale, avviare l'altra attività.

la WebView utilizzerà la cache della WebView creata nella schermata iniziale.

12

È possibile avviare prima il MainActivity e avviare lo SplashActivity in onCreate() di MainActivity. Dopo la durata richiesta, è possibile chiudere semplicemente lo SplashActivity e lo MainActivity verrà visualizzato di nuovo in modo che venga visualizzato come se avessi avviato Main da Splash.

Mi spiego -

Nella vostra MainActiviy utilizzare un intent e iniziare SplashActivity utilizzando startActivity e non startActivityForResult come non si vuole passare indietro il risultato SplashActivity-MainActivity.

Ora che siete in SplashActivity, avviare un thread e aspettare nel thread per la durata desiderata e quindi chiamare finish() in modo che SplashActivity si chiuderà e il già iniziato MainActivity viene in primo piano.

Spero che questo aiuti.

-2

Spero che questo dovrebbe funzionare perfettamente ...

ProgressDialog pd; 

    pd = ProgressDialog.show(YOUR_ACTIVITY.this,"Loading...", true, false); 

      new Thread(new Runnable() { 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 

        Intent intent = new Intent(YOUR_ACTIVITY.this, 
          NEXT_ACTIVITY.class); 

        startActivity(intent); 
        pd.dismiss(); 
       } 
      }).start(); 

     } 
    }); 
Problemi correlati