本文为学习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销毁并重建时自动保存。
如何保存数据?