Android Activity 之 重新创建
目的:Activity被系统销毁,重建时能恢复销毁前的状态。
原理:
实验:
说明:1、把下面代码copy到eclipse中,编译烧写到,通过横竖屏切换,可验证原理中的Activity生命周期的流程图。
2、程序通过back返回键退出程序时,不回调onSaveInstanceState。
代码:
public class MainActivity extends Activity { static final String EDITTEXT = "edittext"; static final String MCOUNT = "mcount"; private Button myButton; int mCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myButton = (Button) findViewById(R.id.myButton); myButton.setText(Integer.toString(mCount)); myButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mCount++; myButton.setText(Integer.toString(mCount)); } }); Log.d("zxs", "/------ Activity onCreate ----------/"); } @Override protected void onStart() { super.onStart(); Log.d("zxs", "/------ Activity onStart ----------/"); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); if (savedInstanceState != null) { mCount = (Integer) savedInstanceState.get(MCOUNT); myButton.setText(Integer.toString(mCount)); Log.d("zxs", "/------ onRestoreInstanceState savedInstanceState != null ----------/"); } else { Log.d("zxs", "/------ onRestoreInstanceState savedInstanceState == null ----------/"); } Log.d("zxs", "/------ Activity onRestoreInstanceState ----------/"); } @Override protected void onResume() { super.onResume(); Log.d("zxs", "/------ Activity onResume ----------/"); } @Override protected void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); savedInstanceState.putInt(MCOUNT, mCount); Log.d("zxs", "/------ Activity onSaveInstanceState ----------/"); } @Override protected void onStop() { super.onStop(); Log.d("zxs", "/------ Activity onStop ----------/"); } @Override protected void onDestroy() { super.onDestroy(); Log.d("zxs", "/------ Activity onDestroy ----------/"); }}
logcat:
01-22 17:00:54.393: D/zxs(28137): /—— Activity onCreate ———-/
01-22 17:00:54.403: D/zxs(28137): /—— Activity onStart ———-/
01-22 17:00:54.403: D/zxs(28137): /—— Activity onResume ———-/
01-22 17:01:05.383: D/zxs(28137): /—— Activity onSaveInstanceState ———-/
01-22 17:01:05.383: D/zxs(28137): /—— Activity onStop ———-/
01-22 17:01:05.383: D/zxs(28137): /—— Activity onDestroy ———-/
01-22 17:01:06.103: D/zxs(28137): /—— Activity onCreate ———-/
01-22 17:01:06.103: D/zxs(28137): /—— Activity onStart ———-/
01-22 17:01:06.103: D/zxs(28137): /—— onRestoreInstanceState savedInstanceState != null ———-/
01-22 17:01:06.103: D/zxs(28137): /—— Activity onRestoreInstanceState ———-/
01-22 17:01:06.103: D/zxs(28137): /—— Activity onResume ———-/
01-22 17:01:15.053: D/zxs(28137): /—— Activity onSaveInstanceState ———-/
01-22 17:01:15.053: D/zxs(28137): /—— Activity onStop ———-/
01-22 17:01:15.053: D/zxs(28137): /—— Activity onDestroy ———-/
01-22 17:01:15.313: D/zxs(28137): /—— Activity onCreate ———-/
01-22 17:01:15.313: D/zxs(28137): /—— Activity onStart ———-/
01-22 17:01:15.313: D/zxs(28137): /—— onRestoreInstanceState savedInstanceState != null ———-/
01-22 17:01:15.313: D/zxs(28137): /—— Activity onRestoreInstanceState ———-/
01-22 17:01:15.313: D/zxs(28137): /—— Activity onResume ———-/
参考:
1:http://my.oschina.net/u/556624/blog/271667:
2:http://developer.android.com/
更多相关文章
- 转:在Eclipse中查看Android SDK的源代码
- 使用Java代码在应用层获取Android系统属性
- android源代码分布结构
- Android初始化OpenGL ES,并且分析Renderer子线程原理
- 性能优化(9)-Android ANR在线监控原理
- Android bluetooth介绍(二): android 蓝牙代码架构及其uart 到rfcom
- Android系统手机重启与恢复出产设置源代码跟踪