activity生命周期

本文为学习udacity上的视频所做,图片为视频截图。如不慎侵犯权益,请联系我删除。




onCreate:创建活动,(会在活动第一次被创建时调用。)

onStart:使活动由不可见变为可见。

onResume:用于使它获取焦点和成为活动的前台应用。调用此方法后可以和用户进行交互,此时的活动一定位于返回栈的栈顶,并且处于运行状态。



        

        

public class MainActivity extends AppCompatActivity {

    /*
     * This tag will be used for logging. It is best practice to use the class's name using
     * getSimpleName as that will greatly help to identify the location from which your logs are
     * being posted.
     */
    private static final String TAG = MainActivity.class.getSimpleName();

    /* Constant values for the names of each respective lifecycle callback */
    private static final String ON_CREATE = "onCreate";
    private static final String ON_START = "onStart";
    private static final String ON_RESUME = "onResume";
    private static final String ON_PAUSE = "onPause";
    private static final String ON_STOP = "onStop";
    private static final String ON_RESTART = "onRestart";
    private static final String ON_DESTROY = "onDestroy";
    private static final String ON_SAVE_INSTANCE_STATE = "onSaveInstanceState";

    /*
     * This TextView will contain a running log of every lifecycle callback method called from this
     * Activity. This TextView can be reset to its default state by clicking the Button labeled
     * "Reset Log"
     */
    private TextView mLifecycleDisplay;

    /**
     * Called when the activity is first created. This is where you should do all of your normal
     * static set up: create views, bind data to lists, etc.
     *
     * Always followed by onStart().
     *
     * @param savedInstanceState The Activity's previously frozen state, if there was one.
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mLifecycleDisplay = (TextView) findViewById(R.id.tv_lifecycle_events_display);

        // TODO (1) Use logAndAppend within onCreate
        logAndAppend(ON_CREATE);
    }

    // TODO (2) Override onStart, call super.onStart, and call logAndAppend with ON_START

    @Override
    protected void onStart() {
        super.onStart();
        logAndAppend(ON_START);
    }


    // TODO (3) Override onResume, call super.onResume, and call logAndAppend with ON_RESUME

    @Override
    protected void onPostResume() {
        super.onPostResume();
        logAndAppend(ON_RESUME);
    }


    // TODO (4) Override onPause, call super.onPause, and call logAndAppend with ON_PAUSE

    @Override
    protected void onPause() {
        super.onPause();
        logAndAppend(ON_PAUSE);
    }


    // TODO (5) Override onStop, call super.onStop, and call logAndAppend with ON_STOP

    @Override
    protected void onStop() {
        super.onStop();
        logAndAppend(ON_STOP);
    }


    // TODO (6) Override onRestart, call super.onRestart, and call logAndAppend with ON_RESTART

    @Override
    protected void onRestart() {
        super.onRestart();
        logAndAppend(ON_RESTART);
    }


    // TODO (7) Override onDestroy, call super.onDestroy, and call logAndAppend with ON_DESTROY


    @Override
    protected void onDestroy() {
        super.onDestroy();
        logAndAppend(ON_DESTROY);
    }

    /**
     * Logs to the console and appends the lifecycle method name to the TextView so that you can
     * view the series of method callbacks that are called both from the app and from within
     * Android Studio's Logcat.
     *
     * @param lifecycleEvent The name of the event to be logged.
     */
    private void logAndAppend(String lifecycleEvent) {
        Log.d(TAG, "Lifecycle Event: " + lifecycleEvent);

        mLifecycleDisplay.append(lifecycleEvent + "\n");
    }

    /**
     * This method resets the contents of the TextView to its default text of "Lifecycle callbacks"
     *
     * @param view The View that was clicked. In this case, it is the Button from our layout.
     */
    public void resetLifecycleDisplay(View view) {
        mLifecycleDisplay.setText("Lifecycle callbacks:\n");
    }
}
 

旋转设备后导致activity被销毁并重新创建,所以我们的生命周期从onResume开始并结束与onPause.(前台生命周期)
why?
有些值,例如设备方向和屏幕宽度,可能会在运行时改变,所以当设备配置改变时,默认的行为是销毁并重建activity。

没看到onPause,因为动态填充的文本视图,如日志视图,不会在activity销毁并重建时自动保存。
 
如何保存数据?





 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值