Android.app.Activity
Activity是用户主要也是唯一打交道的途径。基本上所有的Activity都是和用户打交道的,你可以通过setContentView(View)来创建一个窗口。Activity常常是以全窗口的模式展示的,当然也有其他的展示方式:浮动窗口(windowIsFloating)或则嵌入到其他Activity(ActivityGroup)。基本上所有子类都会重写一下两个方法:
◆ onCreate(Bundle):初始化Activity。这里常会调用setContentView(int)来加载layout资源来定义你的UI,并且使用findViewById(int)来获取组件。
◆ onPause():指离开Activity时候触发的方法。用户在组件上所做的变更都要提交(通常保存到ContentProvider)
如果有调用Activity.startActivity(),必须在AndroidManifest.xml文件中的<activity>标签中声明该Activity。
Activity在整个应用的生命周期中起至关重要的作用。
Activity Lifecycle
系统中的Activity可以通过一个activity栈来进行管理。当一个新的activity启动的时候,它首先会被放置在activity栈顶部并成为running状态的activity —— 之前的activity也在activity栈中,但总是被保存在它的下边,只有当这个新的activity退出以后之前的activity才能重新回到前景界面
所有的activity有四中状态
◆ 如果activity在屏幕前端(在堆栈栈顶),那么这个activity是运行的
◆ 如果一个activity失去焦点时仍然可见(指新打开的activity不占用整屏),那么它的状态是paused。Paused 的Activity仍然可见(依然保存它的数据和状态信息,并且仍然由window manager ),但是会在系统处于低内存状态时候被清除。
◆ 如果一个Activity被其他activity覆盖时,它将处于stopped状态。它仍然保留数据和状态信息,但是它对于用户是不可见的。但是它会在系统其他地方需要内存的时候被杀掉
◆ 如果一个Activity处于paused或则stopped状态时,系统可以通过关闭或则杀掉进程的方式来释放它占用的内存。当再次需要它的时候,系统会重新启动并加载之前的状态。
下图是Activity的主要状态图:
对于你的activity,有三个点比较关键:
◆ Activity的整个生命周期从onCreate(Bundle)到onDestory().activity会在onCreate()时候创建所有的全局状态并且会在onDestory()时候释放这些资源。比如如果需要一个Thread在后台下载网络上的资源,那么需要在onCreate(Bundle)时候创建它并且在onDestory()时候释放它。
◆ Activity可见生命周期从onStart()到onStop().这个时间我们可以在屏幕上看到这些组件,尽管可能这个组件不在最前端。这两个方法之间可以调用一些展示给用户看的资源。比如可以在onStart()是创建一个BroadcastReceiver来接收对用户界面有影响的信息,在onStop()时候关闭它,那么在每次调用onStart()和onStop()时候都会穿件这个BroadcastReceiver。
◆ Activity的前景生命周期从onResume()到onPause()之间。这期间Activity处于和用户交互阶段。Activity会不断的在resume和pause状态之间切换:设备进入睡眠、activity需要的结果已传递过来了或则新的intent到达时。所以这两个方法应该是轻量级的。
Activity在整个生命周期中定义了以下方法,这些方法是以hook的形式定义的,你可以在子类中重写他们,一般来说子类都要覆盖onCreate(Bundle)来初始化一些数据而重写onPause()来提交用户的数据。一般会在最后调用父类的构造函数