理解Activity生命周期
来源:互联网 发布:windows找不到mstsc 编辑:程序博客网 时间:2024/05/29 14:54
最近学习了Activity的生命周期,下面通过一个小例子来更好的理解一下Activity的生命周期。
阶段1::实现如下图所示的界面
此时按下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; }@Overrideprotected void onStart() {super.onStart();System.out.println("onStart...");}@Overrideprotected void onRestart() {super.onRestart();System.out.println("onRestart...");} @Overrideprotected void onResume() {super.onResume();System.out.println("onResume...");}@Overrideprotected void onPause() {super.onPause();System.out.println("onPause...");}@Overrideprotected void onStop() {super.onStop();System.out.println("onStop...");SharedPreferences settings=getSharedPreferences(SETTING_INFOS, 0);settings.edit().putString(NAME, nameinput.getText().toString()).commit();}@Overrideprotected void onDestroy() {super.onDestroy();System.out.println("onDestroy...");} }
- 理解Activity的生命周期
- Activity生命周期理解
- Activity生命周期的理解
- Activity生命周期理解
- Activity生命周期理解
- Android Activity生命周期理解
- 理解Activity生命周期
- Activity生命周期理解
- Activity----生命周期的理解
- 快速理解 activity生命周期
- Android Activity生命周期理解
- Activity生命周期之理解
- 理解Activity Fragment生命周期
- Activity的生命周期理解
- activity生命周期深入理解
- Activity的生命周期理解
- 理解activity的生命周期
- Android Activity生命周期理解
- JDBC
- ViM 命令
- Think_in_CPP第十二章 操作符重载(4)
- 为什么无法重建2005/2008数据库日志
- thinkpad e40 ubuntu系统安装支持无线网卡的历程
- 理解Activity生命周期
- POJ 2411 Mondriaan's Dream
- C++汉诺塔
- java异常的清理工作
- 几何的对称之美——筝形定理
- Servlet技术之GenericServlet抽象类(学习笔记)
- 通过JDBC访问数据库的基本步骤
- 2012.9.14
- HDU 2492