2014-12-20 16 views

cevap

14

Kodun altını çizmeyi denerseniz, onDestroy()'un gerçekten arandığında, onPause() ve onStop() Yaşam döngüsü geri aramaları Atlandı şeklinde bir senaryo bulacaksınız. Eğer finish() ararsanız Etkinlik oluşturulduktan sonra

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     finish(); 
    } 

    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     Log.e("MainActivity", "onDestroy"); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     Log.e("MainActivity", "onPause"); 

    } 

    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super.onStop(); 
     Log.e("MainActivity", "onStop"); 

    } 

Dolayısıyla, sistem doğrudan onDestroy() açılmasına neden olur.

+1

() çağrılacak. –

1

Bu, doğrudan() bir etkinlikte doğrudan aradığımızda mümkündür. bitirmek() bir etkinlikte çağrıldığında, OnDestroy() yürütüldüğünde ve aşağıdaki gelmez şeyler:

  1. etkinlik yöneten herhangi diyaloglar Dismiss.
  2. Etkinliğin yönetmekte olduğu tüm imleçleri kapatın.
  3. Kapat iletişim herhangi bir açık arama
3

biz aktivite Örnek bitiş yöntemini çağırdığınızda bu gerçekleşir: etkinlik çağrısı this.finish();

3

OnPause() ve OnStop (iç ) eğer çağrılan olmayacak on() yöntemi, onCreate() yöntemi içinde 'dan çağrılır. Bu, örneğin, onCreate() sırasında bir hatayı algılarsanız ve sonuç olarak arama sonlandırması() yaparsanız oluşabilir. 'da böyle bir durum olsa da, onPause() ve onStop() öğesinde yapılması beklenen tüm temizleme işlemleri gerçekleştirilmeyecektir.

OnDestroy rağmen

() Bir aktivitenin yaşam döngüsü içinde son geri arama yapıldığında, bu geri arama her zaman denilen olmayabilir ve kaynakları yok etmek üzerine itibar edilmemelidir söz etmek gerekiyor. Sistemin, etkinliğin barındırma sürecini yalnızca bu yöntem (veya başka herhangi bir şekilde) çağırmadan öldüreceği durumlar vardır, bu nedenle , işlem bittikten sonra civarında kalması amaçlanan şeyleri yapmak için kullanılmamalıdır. , onStart() ve onResume() öğesinde oluşturulan kaynakları daha iyi duruma getirdi ve , bunları onStop() ve onPause'da sırasıyla yok etti.

refrence - https://www.toptal.com/android/interview-questions Orada OnPause OnStop() önce bir kez denir başka senaryosu olduğunu ve bitiş() OnPause (atlamak hangi denir) ve OnDestroy almak olduğunu durdurulmazsa bir iş parçacığı içinde

İlgili konular