欢迎来到天天文库
浏览记录
ID:21000553
大小:85.50 KB
页数:3页
时间:2018-10-18
《最新android技术总结文档(3)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、www.tsingyuan.cnAndroid学习总结(3)Activity的生命周期注意到在Activity的API中有大量的onXXXX形式的函数定义,除了我们前面用到的onCreate以外,还有onStart,onStop以及onPause等等。从字面上看,它们是一些事件回调,那么次序又是如何的呢?其实这种事情,自己做个实验最明白不过了。在做这个实验之前,我们先得找到在Android中的Log是如何输出的。显然,我们要用的是android.util.log类,这个类相当的简单易用,因为它提供的全是一些静态方法:
2、Log.v(String tag, String msg); //VERBOSELog.d(String tag, String msg); //DEBUG Log.i(String tag, String msg); //INFOLog.w(String tag, String msg); //WARNLog.e(String tag, String msg); //ERROR前面的tag是由我们定义的一个标识,一般可以用“类名_方法名“来定义。输出的LOG信息,如果用Eclip
3、se+ADT开发,在LogCat中就可以看到,否则用adblogcat也行,不过我是从来都依赖于IDE环境的。好了,现在我们修改前面的HelloThree代码: public void onStart() ...{ super.onStart(); Log.v(TAG,"onStart"); } public void onStop() ...{ super.onStop(); Log.v(TAG,"onStop"); }
4、 public void onResume() ...{ super.onResume(); Log.v(TAG,"onResume"); } public void onRestart() ...{ super.onRestart(); Log.v(TAG,"onReStart"); } public void onPause() ...{ super.onPause();www.tsingyuan.cn
5、 Log.v(TAG,"onPause"); } public void onDestroy() ...{ super.onDestroy(); Log.v(TAG,"onDestroy"); } public void onFreeze(Bundle outState) ...{ super.onFreeze(outState); Log.v(TAG,"onFreeze"); }在HelloThreeB中
6、也同样增加这样的代码,编译,运行一下,从logcat中分析输出的日志。在启动第一个界面ActivityOne时,它的次序是:onCreate(ONE)-onStart(ONE)-onResume(ONE)虽然是第一次启动,也要走一遍这个resume事件。然后,我们点goto跳到第二个ActivityTwo中(前一个没有关闭),这时走的次序是:onFreeze(ONE)-onPause(ONE)-onCreate(TWO)-onStart(TWO)-onResume(TWO)-onStop(ONE)说明,第二个Acti
7、vityTwo在启动前,One会经历一个:冻结、暂停的过程,在启动Two后,One才会被停止?然后,我们再点back回到第一个界面,这时走的次序是:onPause(TWO)-onActivityResult(ONE)-onStart(ONE)-onRestart(ONE)-onResume(ONE)-onStop(TWO)-onDestroy(TWO)说明,返回时,Two没有经历冻结就直接暂停了,在One接收参数,重启后,Two就停止并被销毁了。最后,我们点一下Exit退出应用,它的次序是:onPause(ONE)-
8、onStop(ONE)-onDestroy(ONE)说明如果我们用了finish的话,不会有freeze,但是仍会经历pause-stop才被销毁。这里有点疑问的是:为什么回来时先是Start才是Restart?可是文档中的图上画的却是先restart再start的啊?不过,后面的表格中的描述好象是正确的,start后面总是跟着resume(如
此文档下载收益归作者所有