Android四大组件之Activity(一)

    写在最前, 从大四下学期(去年)开始接触android,来到北京开始实习,再会学校完成毕业设计,又再次返回公司,正式入职,做android应用开发。这期间断断算起来已经差不多一年了。其实很早就想写博客了,因为写博客是一个提升自我技术水平的很有效方法,同时还可以锻炼自己的文笔,和别人分享自己的所学所想,偶尔得到一两句夸奖,便可以高兴很长时间,呵呵,这便是做技术人的单纯的快乐。 这次是下了很大的决心,希望能够将自己这近一年所学到的知识,进行一次系统的复习和提高,同时分享出来。虽然现在网上关于android的技术文章多如牛毛,但我还是会努力写一套有自己风格的android blog。好了,闲话就这么多,下面开始了,哈哈。

    Activity, 是指一类用来呈现交互界面的android应用程序组件。例如,我们通过手机打电话,发短信或者拍照,此时与我们的手指发生交互的界面,实际上就是一个个Activity。每一个Activity系统都会给予一个Windows(窗口),用来绘制用户交互界面,这个窗口将填充到手机屏幕上。

    一个应用程序一般会包括多个Ativity。通常,某个Activity会被设置为该应用程序的“main”(主)Activity,该Activity将作为该应用程序的入口并被用户首次看到。Activity之间是可以相互触发的,以便来执行不同的动作(用户操作)。

   Activity的创建, Activity是Android四大组件之一,该类的定义在android源码的: android/app/ 下。创建自己的Activity需要继承系统的Activity,同时覆写相关方法。Activity有七个也其生命周期有关的方法,这七个方法掌握和控制着Activity的创建与销毁。下面是一个最简单的Activity:

 

   1:  public class MainActivity extends Activity {
   2:      /** Called when the activity is first created. */
   3:      @Override
   4:      public void onCreate(Bundle savedInstanceState) {
   5:          super.onCreate(savedInstanceState);
   6:          setContentView(R.layout.main);
   7:      }
   8:  }

     onCreate()会在Activity被创建时调用,除此之外还有,onStart() , onResume(), onPause(), onStop(), onRestart(),onDestory() ,下面是Activity的生命周期图示:

 

                                                         activity_lifecycle[1]

  上图中涉及到了另一个知识点,即Android进程优先级。

   Android系统会尽可能长的将应用程序的进程保存在内存中(进程缓存),但最终需要移除旧的进程为新的或更重要的进程提供内存资源。Android系统为每个进程计算优先级,以决定哪些进程被保留或被杀死。下面是Android系统进程优先级(优先级由高到低排列):

1、Foreground Process  :位于前台,和用户之间交互

2、Visible Process          :可见的,即没有被 Foreground Process 完全遮住。

3、Services Process       :服务进程,如下载服务,或是访问网络等耗时的进程,Android给予较高的优先级

4、Background Process :运行于后台

5、Empty Process          :没有界面或者说没有view的Activty

      EmptyActivity的定义:

   1:  public class EmptyActivity extends Activity {
   2:      
   3:      public void onCreate(Bundle icicle) {
   4:          super.onCreate(icicle);
   5:      }
   6:   
   7:  }

  下面通过一个简单的例子,直观的看一下Activity的生命周期。

   1:  package com.zhai.demo;
   2:   
   3:  import android.app.Activity;
   4:  import android.os.Bundle;
   5:  import android.util.Log;
   6:   
   7:  public class MainActivity extends Activity {
   8:      //用来跟踪Activity的执行过程
   9:      private int mCount = 0 ;
  10:      
  11:      @Override
  12:      public void onCreate(Bundle savedInstanceState) {
  13:          super.onCreate(savedInstanceState);
  14:          setContentView(R.layout.main);
  15:          mCount++ ;
  16:          Log.d("activity_state", "onCreate(),mCount=" + mCount) ;
  17:          // The activity is being created.
  18:      }
  19:   
  20:      @Override
  21:      protected void onDestroy() {
  22:          super.onDestroy();
  23:          mCount-- ;
  24:          Log.d("activity_state", "onDestroy(),mCount=" + mCount) ;
  25:          // The activity is about to be destroyed.
  26:      }
  27:   
  28:      @Override
  29:      protected void onPause() {
  30:          mCount-- ;
  31:          Log.d("activity_state", "onPause(),mCount=" + mCount) ;
  32:          super.onPause();
  33:          // Another activity is taking focus (this activity is about to be "paused").
  34:      }
  35:   
  36:      @Override
  37:      protected void onRestart() {
  38:          mCount++ ;
  39:          Log.d("activity_state", "onRestart(),mCount=" + mCount) ;
  40:          super.onRestart();
  41:      }
  42:   
  43:      @Override
  44:      protected void onResume() {
  45:          mCount++ ;
  46:          Log.d("activity_state", "onResume(),mCount=" + mCount) ;
  47:          super.onResume();
  48:          // The activity has become visible (it is now "resumed").
  49:      }
  50:   
  51:      @Override
  52:      protected void onStart() {
  53:          mCount++ ;
  54:          Log.d("activity_state", "onStart(),mCount=" + mCount) ;
  55:          super.onStart();
  56:         // The activity is about to become visible.
  57:      }
  58:   
  59:      @Override
  60:      protected void onStop() {
  61:          mCount-- ;
  62:          Log.d("activity_state", "onStop(),mCount=" + mCount) ;
  63:          super.onStop();
  64:          // The activity is no longer visible (it is now "stopped")
  65:   
  66:      }
  67:  }

这个例子中通过打log的方式,来呈现相应场景下Acvtivity的状态,并引入了一个int型的计数器 mCount,来更加直观的显示各个函数的作用也他们之间的关系。

1. 启动应用程序:                                                                      

                       image                                

相应的log信息为:可以清楚的看到,首次启动Activity时,依次调用onCreate(),onStart(),onResume(),

 

image

2.现在我们安返回键,看看会发生什么?

                                 image

image

手机返回到了系统桌面,同时可以看到,依次执行了 onPause(),onStop(),onDestory(), 此时该应用程序退出,Activity已经被销毁。

3. 我们再次进入程序,并按“home”键,看看会发生什么?

image

创建的过程已然相同,但按“home”键时,程序并没有退出,而是由“foreground”转到“backgroud”。接下来我再次进入应用程序,看看该应用如何有被重新转到前台。

image

图中红线标记的,正是再次进入程序时,所发生的事情,应用程序依次调用了 onRestart(),onStart(),onResume().

 

以上的测试,我之前Activity的生命周期图,完全吻合。同时可以看出:[onCreate,onDestory], [onStart(),onStop],[onResume,onPause]也是一一对应的。

好了,就写到这吧,下篇会和大家分享一下Android用来管理Activity的方式——Task。

转载于:https://www.cnblogs.com/zsmiling/archive/2012/09/18/2691697.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值