理解Activity生命周期
2012-09-15 21:21
162 查看
最近学习了Activity的生命周期,下面通过一个小例子来更好的理解一下Activity的生命周期。
阶段1::实现如下图所示的界面
![](http://img.my.csdn.net/uploads/201209/15/1347714633_1662.jpg)
此时按下Home键,再次启动ActivityDemo应用程序,观察一下EditText中还有没有刚才我们输入的data.然后再按下返回键重新启动ActivityDemo应用程序,观察EditText中还有没有data.
阶段2:重写生命周期的7个方法,添加日志输出语句或者是普通的输出语句,观察在按下Home键是首先调用的是哪个方法?再次启动ActivityDemo时又调用的是哪个方法?按下返回键首先调用的是哪个方法?再次动ActivityDemo时又调用的是哪个方法?
经过测试,可以得出结论:
首先,启动ActivityDemo应用程序会调用onCreate、onStart、onResume方法.
然后,在文本框中输入data后,如果按HOME键,会调用onPause、onStop方法。再次启动ActivityDemo应用程序,调用onRestart、onStart、onResume方法。这时,在文本框输入的data仍然保留。
再者,如果按返回键,程序调用onPause、onStop、onDestroy方法。再次启动ActivityDemo应用程序,调用onCreate、onStart、onResume方法。这时,文本框中的data消失。与之前不同的是此次程序运行了onDestroy方法,销毁内存中保留的数据。
现在问题又来了,想想如何实现按下返回键,然后再次启动ActivityDemo应用程序,EditText中仍然保留我们刚刚输入的内容呢?
下面代码重写生命周期的七个方法,实现EditText中名字的保留:
阶段1::实现如下图所示的界面
![](http://img.my.csdn.net/uploads/201209/15/1347714633_1662.jpg)
此时按下Home键,再次启动ActivityDemo应用程序,观察一下EditText中还有没有刚才我们输入的data.然后再按下返回键重新启动ActivityDemo应用程序,观察EditText中还有没有data.
阶段2:重写生命周期的7个方法,添加日志输出语句或者是普通的输出语句,观察在按下Home键是首先调用的是哪个方法?再次启动ActivityDemo时又调用的是哪个方法?按下返回键首先调用的是哪个方法?再次动ActivityDemo时又调用的是哪个方法?
经过测试,可以得出结论:
首先,启动ActivityDemo应用程序会调用onCreate、onStart、onResume方法.
然后,在文本框中输入data后,如果按HOME键,会调用onPause、onStop方法。再次启动ActivityDemo应用程序,调用onRestart、onStart、onResume方法。这时,在文本框输入的data仍然保留。
再者,如果按返回键,程序调用onPause、onStop、onDestroy方法。再次启动ActivityDemo应用程序,调用onCreate、onStart、onResume方法。这时,文本框中的data消失。与之前不同的是此次程序运行了onDestroy方法,销毁内存中保留的数据。
现在问题又来了,想想如何实现按下返回键,然后再次启动ActivityDemo应用程序,EditText中仍然保留我们刚刚输入的内容呢?
下面代码重写生命周期的七个方法,实现EditText中名字的保留:
public class MainActivity extends Activity { private EditText nameinput; public static final String SETTING_INFOS="SETTING_Infos"; public static final String NAME="NAME"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println("onCreate..."); nameinput=(EditText) findViewById(R.id.name); SharedPreferences settings=getSharedPreferences(SETTING_INFOS, 0); String name=settings.getString(NAME, ""); nameinput.setText(name); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override protected void onStart() { super.onStart(); System.out.println("onStart..."); } @Override protected void onRestart() { super.onRestart(); System.out.println("onRestart..."); } @Override protected void onResume() { super.onResume(); System.out.println("onResume..."); } @Override protected void onPause() { super.onPause(); System.out.println("onPause..."); } @Override protected void onStop() { super.onStop(); System.out.println("onStop..."); SharedPreferences settings=getSharedPreferences(SETTING_INFOS, 0); settings.edit().putString(NAME, nameinput.getText().toString()).commit(); } @Override protected void onDestroy() { super.onDestroy(); System.out.println("onDestroy..."); } }
相关文章推荐
- activity的生命周期再理解
- Android 随笔——Activity的生命周期的理解
- Activity生命周期的通俗理解
- Activity生命周期理解
- Activity生命周期理解之二 Pausing and Resuming an Activity
- 深入理解Activity的生命周期
- 一个demo,帮助您加深理解和记忆android activity 生命周期
- 透彻理解android中Activity生命周期
- Activity生命周期深入理解2
- 对activity的生命周期深入理解
- Android之Activity生命周期的理解
- android studio for android learning (五) 最新Activity理解与其生命周期
- 深入理解Activity 生命周期
- 有助于对android的Activity生命周期的理解的例子
- Activity的Launch Mode的理解以及相对应的生命周期的运行
- 【Android笔记】理解Activity的生命周期
- Android编程权威指南(第二版)学习笔记(三)—— 第3章 日志跟踪理解 Activity 生命周期
- Android理解:Activity状态和生命周期
- Activity生命周期的理解
- activity生命周期深入理解