2012-03-04 16 views
18

Quando un'attività viene creata per la prima volta, il sistema chiama il metodo OnContentChanged() come primo metodo e l'ultima chiamata dal sistema è il metodo OnDetachedFromWindow() quando un'attività viene interrotta, ma i documenti Android dice che l'intera durata di un'attività si verifica tra OnCreate() e OnDestroy(). Perché? Per favore aiutami a capire la differenza tra questi metodi.Metodi attività: onCreate() e onDestroy()

Codice:

import android.app.Activity; 
import android.content.res.Configuration; 
import android.os.Bundle; 
import android.widget.Toast; 

public class ActivitylifecycleActivity extends Activity { 
    /** Called when the activity is first created. */ 

    @Override 
    public void onContentChanged() { 
     super.onContentChanged(); 
     Toast.makeText(getApplicationContext(),"1. onContentChanged()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Toast.makeText(getApplicationContext(),"2. onCreate()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Toast.makeText(getApplicationContext(),"3. onStart()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onRestoreInstanceState(Bundle restoreInstanceState) { 
     Toast.makeText(getApplicationContext(),"4. onRestoreinstaneState()", Toast.LENGTH_SHORT).show(); 
     super.onRestoreInstanceState(restoreInstanceState); 
    } 

    @Override 
    public void onRestart() { 
     super.onRestart(); 
     Toast.makeText(getApplicationContext(),"5. onRestart()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    protected void onPostCreate(Bundle onpostcrete) { 
     super.onPostCreate(onpostcrete); 
     Toast.makeText(getApplicationContext(),"6. onPostCreate()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     Toast.makeText(getApplicationContext(),"7. onResume()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    protected void onPostResume() { 
     super.onPostResume(); 
     Toast.makeText(getApplicationContext(),"8. onPostResume()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onAttachedToWindow() { 
     super.onAttachedToWindow(); 
     Toast.makeText(getApplicationContext(),"9. onAttachedToWindow()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onWindowFocusChanged(boolean bo) { 
     super.onWindowFocusChanged(true); 
     Toast.makeText(getApplicationContext(),"10. onWindowFocusChanged()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onUserLeaveHint() { 
     super.onUserLeaveHint(); 
     Toast.makeText(getApplicationContext(),"11. onUserLeaveHint()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onUserInteraction() { 
     super.onUserInteraction(); 
     ii=0; 
     Toast.makeText(getApplicationContext(),"12. onUserInteraction()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     super.onSaveInstanceState(savedInstanceState); 
     Toast.makeText(getApplicationContext(),"13. onSaveInstanceState()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     Toast.makeText(getApplicationContext(),"14. onPause()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     Toast.makeText(getApplicationContext(),"15. onStop()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Toast.makeText(getApplicationContext(),"16. onDestroy()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onDetachedFromWindow() { 
     super.onDetachedFromWindow(); 
     Toast.makeText(getApplicationContext(),"17. onDetachedFromWindow()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     Toast.makeText(getApplicationContext(),"18. onConfigurationChanged()", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public boolean onSearchRequested() { 
     super.onSearchRequested(); 
     Toast.makeText(getApplicationContext(),"19. onSearchRequested()", Toast.LENGTH_SHORT).show(); 
     return false; 
    } 
} 

In questo codice, onContentChanged() viene chiamato prima onCreate() metodo e onDetachedFromWindow() viene chiamato dopo onDestroy(). Perché?

risposta

20

onCreate():

Quando un'attività inizia la sua vita onCreate() è chiamato. Si chiama solo una volta nel ciclo di vita di un'attività.

OnDestroy():

onDestroy() viene chiamato quando un'attività termina il suo ciclo di vita. Viene anche chiamato una volta nel ciclo di vita di un'attività.

onContentChanged():

Questo aggancio viene chiamato quando la vista contenuto dello schermo cambia (a causa di una chiamata a Window.setContentView o Window.addContentView). Ad esempio, aggiungi nuova visualizzazione all'attività o desideri aggiornare l'elenco chiamando notifyDataSetChanged().

onDetachedFromWindow():

Chiamato quando la finestra principale associato con l'attività è stata staccata dal window manager. Ad esempio, viene chiamato quando l'attività corrente passa in background o un'altra attività viene presentata di fronte all'attività corrente.

+0

ma 'onContentChanged()' e 'onDetachedFromWindow()' entrambi i metodi chiamati una volta nel ciclo di vita di un'attività. quando viene creata una nuova attività sistema chiama il metodo 'onContentChanged()' prima di 'onCreate()' e quando un'attività va a distruggere System Call 'onDetachedFromWindow()' come ultimo metodo. –

+0

onContentChanged() viene chiamato ogni volta che cambia il contenuto della finestra. Quando il contenuto della finestra cambia in base alle attività, viene chiamato. Ma se il contenuto della finestra cambia durante l'esecuzione dell'attività su ContentChanged verrà chiamato di nuovo e di nuovo ogni volta che il contenuto cambia. Lo stesso vale per la finestra onDetachedFrom, viene chiamato quando la visualizzazione delle attività non è più visibile ad esempio quando la finestra viene distrutta o un'altra attività viene messa in primo piano. Questo metodo può essere chiamato più di una volta. –

+0

questo codice 'onContentChanged()' ha chiamato perior a 'onCreate()' –

Problemi correlati