2012-08-30 20 views
7

Mam aplikację, w której po zalogowaniu się na ekranie powitalnym. Włożyłem Toast zobaczyć podczas pożarów onResume, ale także pożary po onCreateDlaczego funkcja onResume() jest wywoływana podczas uruchamiania działania?

protected void onResume(){ 
    super.onResume(); 
    Database openHelper = new Database(this);//create new Database to take advantage of the SQLiteOpenHelper class 
    myDB2 = openHelper.getReadableDatabase(); // or getWritableDatabase(); 
    myDB2=SQLiteDatabase.openDatabase("data/data/com.example.login2/databases/aeglea", null, SQLiteDatabase.OPEN_READONLY);//set myDB to aeglea 
     cur = fetchOption("SELECT * FROM user_login");//use above to execute SQL query 
     msg.setText("Username: "+cur.getString(cur.getColumnIndex("username")) 
        +"\nFull name: "+cur.getString(cur.getColumnIndex("name"))+" "+cur.getString(cur.getColumnIndex("last")) 
        +"\ne-mail: "+cur.getString(cur.getColumnIndex("email")) 
        +"\nAeglea id:"+cur.getString(cur.getColumnIndex("uid"))); 

     Toast.makeText(getApplicationContext(), "RESUMED", Toast.LENGTH_SHORT).show(); 
} 

pochodzi ona od:

//create new intent 
Intent log = new Intent(getApplicationContext(), Welcome.class); 
// Close all views before launching logged 
    log.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(log); 
    // Close Login Screen 
    finish(); 

jestem zaskoczony. Proszę zaoferować trochę doświadczenia tutaj

+1

'onPause' lub' onResume'? – zapl

+0

@zapl Przepraszam, że zmienię moje pytanie – MayTheSchwartzBeWithYou

Odpowiedz

19

Cóż, nie rozumiem bardzo dobrze, co próbujesz zapytać lub jakie jest tutaj pytanie. ALE zalecam przeczytanie "Android Activity LifeCycle", a to usunie wiele z twoich wątpliwości w Androidzie nie jest takie samo jak w innych językach lub platformach.

enter image description here

Uwaga: OnResume jest zadzwonić każdym razem, gdy działalność jest „widoczny”, tak jak wiele razy jako swoją aktywność staje się widoczna, taką samą liczbę razy metoda zostanie wywołana. Jeśli chcesz wywołać tę metodę za pierwszym razem, to właśnie OnCreate jest tym, czego szukasz.

+0

Dzięki temu uwaga sprawiła, że ​​bardziej zrozumiałe dla mnie – MayTheSchwartzBeWithYou

+1

powitanie Peter, mam nadzieję, że to może ci pomóc w przyszłości. –

6

Proszę spojrzeć na wykres stanu cyklu aktywności.

To celu metody są nazywane:

  1. onCreate()
  2. onStart()
  3. onResume()
  4. -> aktywność działa

http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle

+0

Tak, założyłem tak dużo, ale pomyślałem, że onResume() został wywołany po uruchomieniu funkcji onPause. – MayTheSchwartzBeWithYou

+1

Jest całkowicie w porządku. Niektóre rzeczy są po prostu inne na Androida, ale kiedy je znasz, pokochasz je. Na początku byłem zszokowany, gdy dowiedziałem się, że onActivityResult (...) jest wywoływany przed onResume (..), na wypadek, gdybyś użył go wkrótce. – Ivo

2

onResume po onCreate jest normalne Activity Lifecycle

Powodem masz onStart i onResume nazywa nawet przy pierwszym uruchomieniu jest to, że sprawia, że ​​pisanie kodu łatwiejsze.

Można założyć, że przed powrotem do onResume dostaniesz nazywa ponieważ nie ma sposobu, aby wyjść z „wznowić” stan bez . To zachowanie może być użyte do zainicjowania rzeczy w onResume i deinicjowania ich bez dalszego sprawdzania w . Jeśli nie możesz być pewien, że onResume został wywołany na początku, cały schemat się zepsuł.

Na stronie internetowej: Nie należy uzyskiwać dostępu do bazy danych za pomocą żadnej z metod onXYZ, ponieważ spowoduje to zablokowanie wątku interfejsu użytkownika, który powinien raczej narysować interfejs użytkownika i obsługiwać zdarzenia dotykowe.

Powiązane problemy