代码改变世界

步入android开发之Activity

2011-03-22 22:39  kaure  阅读(495)  评论(0编辑  收藏  举报

  入手了desire z。作为IT界的一员,怎么也得做点东西出来玩玩。

     照着Google的文档,把环境配置好,正式开始android之旅。

     老实说,android开发让我感觉到它的UI与底层分离和WPF有点像。xml + java ,WPF呢就是xaml + c#.

     作为我blog的第一篇文章,记录一点实质性的东西 --   android 应用之Activity:

     Activity 在android中最直观的表现就是屏幕显示。通常一个Activity就是一个屏幕显示,它与一个单独的类相关联,并且由这个相关联的类来进行控件事件的处理。因此,我们能够使用Intent(特殊类,实现Activity与Activity之间的切换)很方便地从一个屏幕转换到另一个屏幕。在android系统中,Activity的管理由Activity栈进行管理,新生成的Activity会加入到栈顶,处于栈顶的Activity就是我们当前屏幕,而当我们点击后退按钮时,就会进行一个弹栈操作,Activity从栈顶移除,下一个栈被更新成为运行中的状态.

     一个程序拥有生命周期,一个activity也同样拥有。activity的生命周期如下:

    protected void onCreate(Bundle savedInstanceState); //创建,做一些数据的初始化

    protected void onStart();   //这一步用户不可见

    protected void onResume();  //恢复至活动状态

    protected void onPause();  //至暂停状态,不过这一步操作可能会导致数据被系统回收,因为下一个activity可能随时会覆盖本activity

    protected void onStop();  //变得不可见,一般说来是被覆盖了

    protected void onDestroy();//有可能是调用了finish方法,也有可能是系统暂时回收了activity。可以使用isFinish来判断是否结束了activity

    显然在Pause,Stop,与Destory状态,activity中的数据可能出现丢失(系统有可能回收资源),因此我们不得不考虑做一些持久化的操作。当一个已存在栈中的activity被激活时,可能会有两种情况:被回收,未被回收。未被回收比较好处理一点,直接Resume即可,如果被回收了的话,此时回调用OnCreate方法,此时参数内的Bundle(第一次调用时这东西会为空,除非你使用了附加数据Intent.putExtra)可能会不为空,这个东西可以理解成为系统为你维护的内容map表.

    今天就到这里。。。下次再写一下关于activity更深入一点的东西.