2013-05-30 10 views
7

Mam dwie czynności, jedną jest SplashActivity, a drugą jest MainActivity, działanie zawierające przeglądarkę internetową.Jak rozpocząć działalność w tle i pokazać ją później?

Muszę załadować widok internetowy po wyświetleniu ekranu powitalnego. Więc szukam sposobu na załadowanie MainActivity w tle w SplashActivity::onCreate();

Jeśli intend jest bezpośrednio wywoływany, MainActivity jest natychmiast przenoszony na pierwszy plan, a także utkany w widoku webowym.

Rozejrzałem się wiele rozwiązań dotyczących ekran powitalny jak this . Jednak nie inicjalizują MainActivity, dopóki nie upłynie czas rozbłysku.

+0

Można spróbować użyć animacji pokazując główną działalność późno przez niektórych milisekundach sekund ... – amalBit

+3

Można uruchomić główną działalność pierwszy i rozpocząć SplashActivity w onCreate () z MainActivity. Po upływie wymaganego czasu można po prostu zamknąć funkcję SplashActivity, a funkcja MainActivity pojawi się ponownie, aby wyglądała tak, jakby uruchomić Main z Splash. – user1721904

+0

@ user1721904 Tak, myślę, że ten pomysł powinien zadziałać. Czy mógłbyś podać więcej szczegółów na ten temat? Powiedz, czy powinienem użyć 'finish()', aby zatrzymać SplashActivity? czy powinienem użyć zamiaru go uruchomić? Proszę również napisać to jako odpowiedź.THX – SolessChong

Odpowiedz

5

Aplikacje na Androida mogą buforować dane w Internecie. możesz to wykorzystać na swoją korzyść. (i zadziałało to dla mnie). Co zrobiłem:

  • stworzyłem WebView na ekranie powitalnym.
  • nie dołączyłem go do interfejsu użytkownika,
  • zażądał strony potrzebnej w głównej aktywności.
  • po załadowaniu WebView na ekranie powitalnym uruchom inne działanie.

WebView użyje pamięci podręcznej WebView utworzonego na ekranie powitalnym.

12

Najpierw można uruchomić MainActivity i uruchomić SplashActivity w onCreate() z MainActivity. Po upływie wymaganego czasu można po prostu zamknąć wyświetlanie numeru SplashActivity i MainActivity, aby wyglądało to tak, jakby uruchomić Main z Splash.

Pozwól mi to wyjaśnić -

w twojej MainActiviy użyć intent i rozpocząć SplashActivity za pomocą startActivity i nie startActivityForResult jak nie chcesz, aby przejść z powrotem wynik z SplashActivity do MainActivity.

Teraz, gdy jesteś w SplashActivity, rozpocząć wątek i czekać w wątku przez wymagany okres, a następnie zadzwonić finish() tak że SplashActivity zostanie zamknięte, a wcześniej zaczął MainActivity wychodzi na pierwszy plan.

Mam nadzieję, że to pomoże.

-2

mam nadzieję, że to powinno działać idealnie ...

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(); 

     } 
    }); 
Powiązane problemy