活动方法:onCreate()和onDestroy()

ρяσ*_*я K 16 android android-activity

当第一次创建一个活动时,系统将该OnContentChanged()方法作为第一个方法调用,系统最后一次调用是OnDetachedFromWindow()一个活动被杀死的方法,但是android文档说活动的整个生命周期发生在OnCreate()和之间OnDestroy().为什么?请帮助我理解这些方法之间的区别.

码:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,onContentChanged()onCreate()方法之前onDetachedFromWindow()调用并在之后调用onDestroy().为什么?

Muh*_*rif 19

的onCreate():

当一项活动开始时,它onCreate()就会被召唤.它只在活动的生命周期中调用一次.

的onDestroy():

onDestroy()在活动完成其生命周期时调用.它在活动的生命周期中也被调用一次.

onContentChanged():

每当屏幕的内容视图发生变化时(由于调用Window.setContentViewWindow.addContentView),都会调用此挂钩.例如,您向活动添加新视图或想要通过调用刷新列表notifyDataSetChanged().

onDetachedFromWindow():

当与活动关联的主窗口已从窗口管理器中分离时调用.例如,当当前活动进入后台或其他活动进入当前活动时调用它.