Android etkinlik yaşam döngüsü - tüm bu yöntemler ne için?


420

Android etkinliğinin yaşam döngüsü nedir? Neden bu kadar çok benzer sondaj yöntemleri (edilmektedir onCreate(), onStart(), onResume()) başlatma sırasında denir ve böylece diğerleri ( onPause(), onStop(), onDestroy()) sonunda aradı?

Bu yöntemler ne zaman çağrılır ve nasıl düzgün kullanılmalıdır?


17
Bu soru neden bu kadar çok kez değerlendirildi? Neden kapatılmadı?
Alexander Kulyakhtin

54
Neden bir sürü upvotes ile bir soru kapatmak? Stackoverflow bunun kötü bir alışkanlığı var.
Dick Lucas

12
Bu wiki tarzı bir soru ve sitede izin verilmesi gerektiğini hissediyorum.
Mateen Ulhaq

2
@Alexander Kulyakhtin - Bu soruyu neden kapatmalıyım? Bunun yerine, yeni android millet cevaplarında verilen bilgileri sindiremiyorsanız hesabınızı kapatmalısınız. Bu soru bilgi dolu ve ben bu soruyu oylayacağım.
Stack Overflow

Bu yöntemlere ne zaman soru deniyor, ne denediniz?
Sreekanth Karumanaghat

Yanıtlar:


748

Çalışırken görün Etkinlik Yaşam Döngüsü (Android Developers'da).

Resim açıklamasını buraya girin

onCreate () :

Etkinlik ilk oluşturulduğunda çağrılır. Burası tüm normal statik kurulumunuzu yapmanız gereken yerdir: görünümler oluşturun, verileri listelere bağlayın, vb. Bu yöntem ayrıca etkinliğin önceden dondurulmuş durumunu (varsa) içeren bir Paket de sağlar. Daima onStart () ile devam edin.

onRestart () :

Etkinliğiniz durdurulduktan sonra tekrar başlatılmadan önce çağrılır. Her zaman onStart ()

onStart () :

Etkinlik kullanıcı tarafından görülebilir hale geldiğinde çağrılır. Ardından etkinlik ön plana gelirse onResume () gelir.

Özgeçmişte() :

Etkinlik kullanıcıyla etkileşime girmeye başladığında çağrılır. Bu noktada etkinliğiniz, kullanıcı girişi etkin olacak şekilde etkinlik yığınının en üstünde yer alır. Daima onPause () öğesini takip edin.

onPause () :

Bir etkinlik arka plana giderken (henüz) öldürülmediğinde etkinlik yaşam döngüsünün bir parçası olarak adlandırılır. Karşılığı onResume (). B aktivitesi A aktivitesinin önünde başlatıldığında, bu geri arama A'da başlatılır. A'nın onPause () geri dönmesine kadar B oluşturulmaz, bu yüzden burada uzun bir şey yapmadığınızdan emin olun.

onStop () :

Artık kullanıcı tarafından görünür olmadığınızda çağrılır. Daha sonra, sonraki kullanıcı etkinliğine bağlı olarak onRestart (), onDestroy () veya hiçbir şey almazsınız. Sistemin onPause () yöntemi çağrıldıktan sonra çalışmasını sürdürmek için yeterli belleğe sahip olmadığı düşük bellek durumlarında bu yöntemin hiçbir zaman çağrılamayabileceğini unutmayın.

onDestroy () :

Etkinliğinizden önce gelen son çağrı yok edilir. Bunun nedeni, etkinliğin bitmesi (üzerinde finish () adı verilen biri) olması ya da sistemin yer kazanmak için etkinliğin bu örneğini geçici olarak yok etmesi olabilir.

Etkinlik ilk kez yüklendiğinde , olaylar aşağıdaki gibi çağrılır:

onCreate()
onStart()
onResume()

Ne zaman Telefon butonuna tıklayın Aktivite arka planda çalışmaya başlar ve olaylar aşağıda denir:

onPause()
onStop()

Telefon çeviriciden çıkın ve aşağıdaki olaylar çağrılacaktır:

onRestart()
onStart()
onResume()

Geri düğmesine tıkladığınızda VEYA etkinliği bitirmeye () çalıştığınızda olaylar aşağıdaki gibi çağrılır:

onPause()
onStop()
onDestroy()

Faaliyet Durumları

Android işletim sistemi, cihazda çalışan etkinlikleri yönetmeye yardımcı olmak için bir öncelik kuyruğu kullanır. Belirli bir Android etkinliğinin bulunduğu duruma bağlı olarak, işletim sisteminde belirli bir öncelik atanır. Bu öncelik sistemi, Android'in artık kullanılmayan etkinlikleri belirlemesine yardımcı olarak işletim sisteminin belleği ve kaynakları geri kazanmasına olanak tanır. Aşağıdaki şemada, bir faaliyetin ömrü boyunca geçebileceği durumlar gösterilmektedir:

Bu durumlar aşağıdaki gibi üç ana gruba ayrılabilir:

Etkin veya Çalışıyor - Etkinlikler, etkinlik yığınının tepesi olarak da bilinen ön plandaysa etkin veya çalışır durumda kabul edilir. Bu, Android Etkinlik yığındaki en yüksek öncelikli etkinlik olarak kabul edilir ve bu nedenle, işletim sisteminin cihazda mevcut olandan daha fazla bellek kullanmaya çalışması gibi UI'nin cevap vermemek.

Duraklatıldı - Cihaz uykuya daldığında veya bir etkinlik hala görünür ancak yeni, tam boyutlu veya şeffaf olmayan bir etkinlik tarafından kısmen gizlendiğinde, etkinlik duraklatılmış olarak kabul edilir. Duraklatılmış faaliyetler hala canlıdır, yani tüm eyalet ve üye bilgilerini tutarlar ve pencere yöneticisine bağlı kalırlar. Bu, Android Etkinlik yığınındaki ikinci en yüksek öncelikli etkinlik olarak kabul edilir ve bu nedenle, yalnızca bu etkinliği öldürmek, Etkin / Çalışan Etkinliği sabit ve duyarlı tutmak için gerekli kaynak gereksinimlerini karşılayacaksa işletim sistemi tarafından öldürülür.

Durduruldu - Başka bir etkinlik tarafından tamamen gizlenen etkinlikler durdurulmuş veya arka planda değerlendirilir. Durdurulan faaliyetler hâlâ durumlarını ve üye bilgilerini mümkün olduğunca uzun süre tutmaya çalışmaktadır, ancak durdurulan faaliyetler üç eyaletin en düşük önceliği olarak kabul edilmektedir ve işletim sistemi kaynak gereksinimlerini karşılamak için önce bu eyaletteki faaliyetleri öldürecektir. yüksek öncelikli faaliyetlerin.

* Yaşam döngüsünü anlamak için örnek etkinlik **

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
    String tag = "LifeCycleEvents";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       Log.d(tag, "In the onCreate() event");
    }
    public void onStart()
    {
       super.onStart();
       Log.d(tag, "In the onStart() event");
    }
    public void onRestart()
    {
       super.onRestart();
       Log.d(tag, "In the onRestart() event");
    }
    public void onResume()
    {
       super.onResume();
       Log.d(tag, "In the onResume() event");
    }
    public void onPause()
    {
       super.onPause();
       Log.d(tag, "In the onPause() event");
    }
    public void onStop()
    {
       super.onStop();
       Log.d(tag, "In the onStop() event");
    }
    public void onDestroy()
    {
       super.onDestroy();
       Log.d(tag, "In the onDestroy() event");
    }
}

1
Bu yüzden doğru anladıysam onStop () her zaman onPause () sonra çağrılır?
Titouan de Bailleul

4
Her zaman DEĞİL, "onStop (): Artık kullanıcı tarafından görülemediğinizde çağrılır"
Yaqub Ahmad

2
Herhangi bir şans eseri onCreate'den önce aranan bir şey var mı?
NodeDad

6
Evet var - varsayılan kurucu (parametresiz olanıdır). Ancak çok temel başlatma amaçları için çok sınırlı bir kullanımı vardır. Genellikle gerektiğini değil gerçekten ne yaptığınızı bilmedikçe kullanabilirsiniz. Ve o zaman bile bir şeyler yapmanın daha iyi bir yolu varsa iki kez düşünmelisiniz.
Mjoellnir

1
Bu bağlantının, etkinliğin yaşam döngüsünü daha iyi anlamanıza yardımcı olabileceğini düşünüyorum. iphtechnologies.com/understanding-lifecycle-in-android-activity
Ashish Kumar Mishra

162

Faaliyetin altı durumu var

  • düzenlendi
  • Başlatılan
  • Devam ettirildi
  • Durduruldu
  • Durduruldu
  • Yerlebir edilmiş

Etkinlik yaşam döngüsünün yedi yöntemi vardır

  • onCreate()
  • onStart()
  • onResume()
  • onPause()
  • onStop()
  • onRestart()
  • onDestroy()

aktivite yaşam döngüsü

durumlar

  • Uygulamayı açtığınızda

    onCreate() --> onStart() -->  onResume()
  • Geri düğmesine basıldığında ve uygulamadan çıkıldığında

    onPaused() -- > onStop() --> onDestory()
  • Ana ekran düğmesine basıldığında

    onPaused() --> onStop()
  • Son görev listesinden uygulamayı tekrar açtığınızda veya simgeyi tıklattığınızda ana ekran düğmesine bastıktan sonra

    onRestart() --> onStart() --> onResume()
  • Uygulama açıldığında bildirim çubuğundan veya açık ayarlardan başka bir uygulama

    onPaused() --> onStop()
  • Geri düğmesine başka bir uygulamadan basıldıktan sonra kullanılan ayarlar uygulamamızı görebilir

    onRestart() --> onStart() --> onResume()
  • Ekranda herhangi bir iletişim kutusu açıldığında

    onPause()
  • İletişim kutusunu veya geri düğmesini iletişim kutusundan çıkardıktan sonra

    onResume()
  • Uygulamada herhangi bir telefon çalıyor ve kullanıcı

    onPause() --> onResume() 
  • Kullanıcı telefonun cevap düğmesine bastığında

    onPause()
  • Çağrı bittikten sonra

    onResume()
  • Telefon ekranı kapandığında

    onPaused() --> onStop()
  • Ekran tekrar açıldığında

    onRestart() --> onStart() --> onResume()

6
'Ekranda herhangi bir iletişim kutusu açıldığında, onPause () çağrılır', bir alertdialog için geçerli değildir. Yalnızca iletişim kutusunun kendisi bir iletişim etkinliği olduğunda çağrılır (teması @android: style / Theme.Dialog olarak ayarlanır).
gaurav jain

2
Değerli cevap. Dokümanlarına eklemek için bunu Google'a gönderin. Cevabınızı saklamak için bir Word belgesine kaydediyorum!
likejudo

"Uygulamada herhangi bir telefon çalıyor ve kullanıcı" anlamıyorum. Senaryo tam olarak nedir? Benim ilk olsa kullanıcı app ve telefon çalmaya başlar sonra tam ekran çağrı olması durumunda onPause () -> onStop () olurdu. Heads-up gelen çağrı mesajı için sadece OnResume -> onPause () olabilir ama bundan emin değilim. OnPause -> onResume çağrısında durum nedir? Aramanın sonunda mı?
Sotti

Aradığım şey buydu. Sadece api aramamı nereye koymalıyım bilmek istedim.
Heisenberg

Senaryo tabanlı cevabınızı beğendim .
kokabi

155

Tüm karışıklık, Google'ın aşağıdaki gibi bir şey yerine sezgisel olmayan adlar seçmesi nedeniyle ortaya çıkar:

onCreateAndPrepareToDisplay()   [instead of onCreate() ]
onPrepareToDisplay()            [instead of onRestart() ]
onVisible()                     [instead of onStart() ]
onBeginInteraction()            [instead of onResume() ]
onPauseInteraction()            [instead of onPause() ]
onInvisible()                   [instead of onStop]
onDestroy()                     [no change] 

Faaliyet Şeması şu şekilde yorumlanabilir:

resim açıklamasını buraya girin


1
Bağlı olmak. Karışıklık çözmedikçe, uzun bir isim zarar vermez. Örn: onRoutePresentationDisplayChanged (), Android SDK'nın içinden bir işlevdir
Nilesh Pawar

12
Şahsen isimlerinizi son derece daha sezgisel bulmuyorum, ayrıca Fragments ile, gerçekten korelasyon göstermiyor.
Martin Marconcini

9
Upvoted. Resmi belgelerden daha yararlı
bad_keypoints

3
Harika bir yazı. Bir problem. Google'a Andoid Yaşam Döngüsü yöntemleri yazdığınızda, bu resim Android Yaşam döngüsü yöntemlerinin yanıtı olarak arama seçeneğinin (resim arama modunda bile değil) yukarısına gelir. Bilinmeyen (veya nasıl göründüğüne bağlı olarak tembel), akış şeması görüntüsüne (resminize) tıklamak yerine StackOverflow bağlantısını izlemedikçe kolayca yanıltıcı olabilir.
Andrew S

1
Evet. Aradığım şey bu. Birisi böyle şeyler içeren bir kitap (ya da bir doktor?) Yazmalıdır. onResume vb. bir anlam ifade etmiyor.
Sert Kanchina

22

ANDROID YAŞAM DÖNGÜSÜ

Bir Android uygulamasının yaşam döngüsünü yöneten yedi yöntem vardır:


Tüm bu yöntemlerin ne için olduğunu cevaplayın:

Bu yöntemlerin hangi sırayla çağrıldığını bilmenin neden kullanıldıklarına açıklık getirmemize yardımcı olacağı basit bir senaryo alalım.

  • Bir hesap makinesi uygulaması kullandığınızı varsayalım. Uygulamayı başlatmak için art arda üç yöntem çağrılır.

onCreate() - - -> - - ->onStart() onResume()

  • Hesap makinesi uygulamasını kullanırken aniden bir çağrı geliyor. Hesap makinesi etkinliği arka plana gider ve başka bir etkinlik söyler. Çağrı ile uğraşmak ön plana çıkar ve şimdi iki yöntem arka arkaya çağrılır.

onPause() - - -> onStop()

  • Şimdi telefonda konuşmayı bitirdiğimi, hesap makinesi aktivitesinin arka plandan ön plana çıktığını, bu yüzden art arda üç yöntem çağrıldığını varsayalım.

onRestart() - - -> - - ->onStart() onResume()

  • Son olarak, hesap makinesi uygulamasındaki tüm görevleri tamamladığımı ve uygulamadan çıkmak istediğimi varsayalım. Daha sonra iki yöntem arka arkaya çağrılır.

onStop() - - -> onDestroy()


Bir etkinliğin muhtemelen var olabileceği dört durum vardır:

  • Başlangıç ​​Durumu
  • Çalışma Durumu
  • Duraklatılmış Durum
  • Durdu durumu

Başlangıç ​​durumu şunları içerir:

Yeni bir Linux işlemi oluşturma, yeni UI nesneleri için yeni bellek ayırma ve tüm ekranı ayarlama. Yani işin çoğu burada yer alıyor.

Çalışma durumu şunları içerir:

Şu anda ekranda olan etkinliktir (durum). Bu durum tek başına ekrana yazma, dokunma ve tıklatma gibi şeyleri işler.

Duraklatılmış durum şunları içerir:

Bir etkinlik ön planda değilse ve bunun yerine arka planda olduğunda, etkinliğin duraklatılmış durumda olduğu söylenir.

Durdurulmuş durum şunları içerir:

Durdurulmuş bir etkinlik yalnızca yeniden başlatılarak ön plana alınabilir ve ayrıca herhangi bir zamanda imha edilebilir.

Etkinlik yöneticisi, tüm bu durumları, yeni etkinliğin mevcut etkinliklere eklendiği senaryolarda bile, kullanıcı deneyimi ve performansının her zaman en iyi şekilde olacağı şekilde işler.


onResa to onResume için herhangi bir örnek ?
zeeali

14

Bu soruyu ve cevaplarını beğendim, ancak şimdiye kadar onPostCreate () veya onPostResume () gibi daha az kullanılan geri aramaların kapsamı yok . Steve Pomeroy, bunları ve bunların Android'in Fragment yaşam döngüsü ile nasıl ilişkili olduğunu gösteren bir diyagramı denedi , https://github.com/xxv/android-lifecycle . Steve'in büyük diyagramını yalnızca Etkinlik bölümünü içerecek şekilde revize ettim ve harf boyutu bir sayfalık çıktı için biçimlendirdim. Ben https://github.com/code-read/android-lifecycle/blob/master/AndroidActivityLifecycle1.pdf adresinde bir metin PDF olarak gönderdim ve aşağıdaki resim:

Android Etkinlik Yaşam Döngüsü


8

Android Geliştiricileri sayfasından,

OnPause ():

Sistem önceki bir etkinliği sürdürmek üzere olduğunda çağrılır. Bu genellikle kalıcı verilerde kaydedilmemiş değişiklikler yapmak, animasyonları ve CPU tüketebilecek diğer şeyleri durdurmak için kullanılır. Bu yöntemin uygulamaları çok hızlı olmalıdır, çünkü bu yöntem geri dönene kadar bir sonraki etkinlik sürdürülmez. Ardından etkinlik öne geri dönerse onResume () veya kullanıcı tarafından görünmez hale gelirse onStop () ile devam eder.

OnStop ():

Etkinlik artık kullanıcı tarafından görülemediğinde çağrılır, çünkü başka bir etkinlik devam ettirilir ve bu etkinlik devam eder. Bu, yeni bir faaliyetin başlatılması, mevcut bir etkinliğin önüne getirilmesi veya bu etkinliğin yok edilmesi nedeniyle olabilir. Ardından bu etkinlik kullanıcıyla etkileşime girecekse onRestart () veya bu etkinlik devam ediyorsa onDestroy () ile devam eder.

Şimdi üç Etkinlik olduğunu ve A'dan B'ye gittiğinizi varsayalım, o zaman onPause A şimdi B'den C'ye çağrılacak, o zaman onBouse ve AStop of A çağrılacak.

Duraklatılan Etkinlik bir Özgeçmiş alır ve Durdurulan Yeniden Başlar.

Aradığın zaman this.finish() , onPause-onStop-onDestroy çağrılacaktır. Hatırlanması gereken en önemli şey: duraklatılmış Etkinlikler Durduruldu ve Durduruldu etkinliği, Android diğer işlemler için bellek gerektirdiğinde imha edilir.

Umarım yeterince açıktır.


can biz terim OnPause yöntemi aktivitesi arasında bir ara aşama gevşek odak başlayan ve son olarak kullanıcıya ve faaliyet tamamen kullanıcıya invisble hale gelmiştir olduğu gibi OnStop yönteme invisble olma olarak
Nav

Bence böyle olmalı.
Masiar

3
@Nav 3 Etkinlik olduğunu ve A'dan B'ye gittiğinizi varsayalım, o zaman onA duraklaması şimdi B'den C'ye çağrılacak, sonra onB duraklaması ve A'nın durdurulacak.
MKJParekh

3

Yüksek puanlı cevabın üzerine biraz daha bilgi eklemek (ÖLDÜRÜLEN ek bölüm ve yaşam döngüsünde çağrılacak olan bir dizi yöntem eklendi):

Kaynak: developer.android.com

resim açıklamasını buraya girin

" Killable "Yukarıdaki tabloda " sütununa dikkat edin - killable olarak işaretlenen yöntemler için, bu yöntem döndükten sonra etkinliği barındıran işlem, kodunun başka bir satırı yürütülmeden herhangi bir zamanda sistem tarafından öldürülebilir.

Bu nedenle, onPause()depoya kalıcı veriler (kullanıcı düzenlemeleri gibi) yazmak için yöntemi kullanmalısınız . Buna ek olarak, yöntem onSaveInstanceState(Bundle), etkinliği böyle bir arka plan durumuna getirmeden önce çağrılır ve etkinliğinizin yeniden oluşturulması Bundlegerektiğinde daha sonra alınmak üzere etkinliğinizdeki herhangi bir dinamik örnek durumunu belirli bir alana kaydetmenize olanak tanır onCreate(Bundle).

Kalıcı verilerin onPause()yerine kaydedilmesinin önemli olduğunu unutmayın .onSaveInstanceState(Bundle) çünkü ikincisi yaşam döngüsü geri çağrılarının bir parçası olmadığından, belgelerinde açıklandığı gibi her durumda çağrılmayacaktır.

Birkaç yöntem daha eklemek istiyorum. Bunlar yaşam döngüsü yöntemleri olarak listelenmez, ancak bazı koşullara bağlı olarak yaşam döngüsü sırasında çağrılacaktır. Gereksiniminize bağlı olarak, durumun uygun şekilde işlenmesi için bu yöntemleri uygulamanızda uygulamanız gerekebilir.

onPostCreate(Bundle savedInstanceState)

Etkinlik başlatma tamamlandığında çağrılır (sonra onStart()ve onRestoreInstanceState(Bundle)çağrılır).

onPostResume()

Etkinlik devam ettirme tamamlandığında ( onResume()çağrıldıktan sonra ) çağrılır.

onSaveInstanceState(Bundle outState)

Durumun geri yüklenebilmesi için öldürülmeden önce bir etkinlikten örnek durumu almaya çağrılır onCreate(Bundle)veya onRestoreInstanceState(Bundle)(bu yöntemle doldurulan Paket her ikisine de aktarılır).

onRestoreInstanceState(Bundle savedInstanceState)

Bu yöntem, onStart()etkinlik burada önceden kaydedilmiş bir durumdan yeniden başlatıldıktan sonra çağrılır savedInstanceState.

Tüm bu yöntemleri kullanarak uygulama kodum:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private EditText txtUserName;
    private EditText txtPassword;
    Button  loginButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("Ravi","Main OnCreate");
        txtUserName=(EditText) findViewById(R.id.username);
        txtPassword=(EditText) findViewById(R.id.password);
        loginButton =  (Button)  findViewById(R.id.login);
        loginButton.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        Log.d("Ravi", "Login processing initiated");
        Intent intent = new Intent(this,LoginActivity.class);
        Bundle bundle = new Bundle();
        bundle.putString("userName",txtUserName.getText().toString());
        bundle.putString("password",txtPassword.getText().toString());
        intent.putExtras(bundle);
        startActivityForResult(intent,1);
       // IntentFilter
    }
    public void onActivityResult(int requestCode, int resultCode, Intent resIntent){
        Log.d("Ravi back result:", "start");
        String result = resIntent.getStringExtra("result");
        Log.d("Ravi back result:", result);
        TextView txtView = (TextView)findViewById(R.id.txtView);
        txtView.setText(result);

        Intent sendIntent = new Intent();
        //sendIntent.setPackage("com.whatsapp");
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, "Message...");
        sendIntent.setType("text/plain");
        startActivity(sendIntent);
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("Ravi","Main Start");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("Ravi","Main ReStart");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("Ravi","Main Pause");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("Ravi","Main Resume");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("Ravi","Main Stop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("Ravi","Main OnDestroy");
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onPostCreate(savedInstanceState, persistentState);
        Log.d("Ravi","Main onPostCreate");
    }

    @Override
    protected void onPostResume() {
        super.onPostResume();
        Log.d("Ravi","Main PostResume");
    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
    }
}

Giriş Etkinliği:

public class LoginActivity extends AppCompatActivity {

    private TextView txtView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        txtView = (TextView) findViewById(R.id.Result);
        Log.d("Ravi","Login OnCreate");
        Bundle bundle = getIntent().getExtras();
        txtView.setText(bundle.getString("userName")+":"+bundle.getString("password"));
        //Intent  intent = new Intent(this,MainActivity.class);
        Intent  intent = new Intent();
        intent.putExtra("result","Success");
        setResult(1,intent);
       // finish();
    }
}

çıktı: (Duraklatmadan önce)

D/Ravi: Main OnCreate
D/Ravi: Main Start
D/Ravi: Main Resume
D/Ravi: Main PostResume

çıktı: (Duraklattıktan sonra devam)

D/Ravi: Main ReStart
D/Ravi: Main Start
D/Ravi: Main Resume
D/Ravi: Main PostResume

onPostResume()Yaşam döngüsü yöntemi olarak belirtilmese de çağrıldığını unutmayın .


0

Yukarıdaki cevaplara göre bazı günlükleri çalıştırın ve işte çıktı:

Faaliyete Başlamak

On Activity Load (First Time)
————————————————————————————————————————————————
D/IndividualChatActivity: onCreate: 
D/IndividualChatActivity: onStart: 
D/IndividualChatActivity: onResume: 
D/IndividualChatActivity: onPostResume: 

Reload After BackPressed
————————————————————————————————————————————————
D/IndividualChatActivity: onCreate: 
D/IndividualChatActivity: onStart: 
D/IndividualChatActivity: onResume: 
D/IndividualChatActivity: onPostResume: 

OnMaximize(Circle Button)
————————————————————————————————————————————————
D/IndividualChatActivity: onRestart: 
D/IndividualChatActivity: onStart: 
D/IndividualChatActivity: onResume: 
D/IndividualChatActivity: onPostResume: 

OnMaximize(Square Button)
————————————————————————————————————————————————
D/IndividualChatActivity: onRestart: 
D/IndividualChatActivity: onStart: 
D/IndividualChatActivity: onResume: 
D/IndividualChatActivity: onPostResume: 

Etkinliği Durdurma

On BackPressed
————————————————————————————————————————————————
D/IndividualChatActivity: onPause:
D/IndividualChatActivity: onStop: 
D/IndividualChatActivity: onDestroy: 

OnMinimize (Circle Button)
————————————————————————————————————————————————
D/IndividualChatActivity: onPause: 
D/IndividualChatActivity: onStop: 

OnMinimize (Square Button)
————————————————————————————————————————————————
D/IndividualChatActivity: onPause: 
D/IndividualChatActivity: onStop: 

Going To Another Activity
————————————————————————————————————————————————
D/IndividualChatActivity: onPause:
D/IndividualChatActivity: onStop: 

Close The App
————————————————————————————————————————————————
D/IndividualChatActivity: onDestroy: 

Kişisel görüşüme göre, onStart ve onStop üzerinde sadece iki tane gereklidir.

onResume, geri dönmenin her örneğinde ve ayrılma her örneğinde onPause gibi görünüyor (uygulamayı kapatmak hariç).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.