
万树IT:Android基础学习之Activity
更新时间:2017-10-12 09:28 来源:未知 浏览次数:
- 分享到:
同样安卓开发人员在工作中也经常针对Activity工作,因此可以说它是Android学习中基础中的基础。那么,作为一个移动测试领域的Tester,应该对Activity有哪些了解呢?

一、Activity的作用
1)用户交互:
a)Activity可以获取layout/xxx.xml文件内容(.xml文件可以作为界面配置文件),通过setContentView()将界面显示出来;
b)Activity可以获取后台逻辑结果,例如:消息推送、计时结束等,将其更新展示在UI界面,以供用户查看;
c)Activity也可以接收用户的指令,交给后台进行处理。

每个Activity中都包含一个PhoneWindow对象,而PhoneWindow又包含DecorView作为根View。DecorVIew分为两部分:TitleView是安卓界面最上方的工具栏;ContentView则是负责显示主要界面,前面讲过的setContentView()就是将layout/xxx.xml设置在这样的一个view界面里。
2)获取Context对象
a)Context在安卓开发中扮演者一个重要角色,许多系统组件、布局,甚至第三方安卓开源库都需要Context提供功能和环境支持,它贯穿在整个应用进程的生命周期中;
b)Activity与Application、Service一样,是获取应用上下文Context的途径之一。
3)保存状态
这里的存储数据并非指它具有数据库的功能,这里是说Activity在必要的时刻记录当前的某些状态,当用户重新进入这个Activity里时,能够恢复刚才的状态。
4)配置改动后处理
当设备的配置改变时,例如横竖屏切换,Android系统会重建当前的Activity。因为这时候所需的资源可能需要重新加载——例如横竖屏的界面显示布局不同。重建Activity可能就用到了3)中的保存状态的功能。
5)Activity、Service之间切换
Activity可以通过Intent启动其他Activity或者Service,同时通过Intent传递少量的数据。一个应用中可以有许多个Activity,新启动的Activity在Activity栈的栈顶(standard模式)。当用户按下BACk键后,栈顶的Activity弹出,生命周期结束,栈中第二个Activity成为栈顶,就是刚刚的旧界面。这也是连续按BACK键,安卓程序自动返回刚才界面的原因。
二、Activity生命周期
Activity生命周期如下图所示:

1)完整生命周期
如图中红线所示。onCreate()在首次创建Activity时调用,可用于初始化一些Activity必要的设置,例如UI中Button的显示内容,后台下载资源的线程。而onDestory()则在每次Activity销毁时调用;
2)可见生命周期
如图中蓝线所示。当Activity处于可见状态时(无论能否获取用户输入,只要可以看见)处在这个周期区间中。一旦Activity不可见,则进入onStop(),而当Activity又可见时,onStop()会经过onRestart()最终返回onStart(),继而执行onResume()、running状态;
3)前台生命周期
如图中橙色所示。此时,当前Activity位于屏幕最前端,可以获取到用户的输入信息。当有其他界面盖住当前Activity一部分时,执行onPause()。
注意,Activity可见并不意味着可以获取到用户的输入信息。例如Activity1在运行中,突然弹出一个Activity2挡住了Activity1的一部分,但并未完全遮住,这时Activity1就是可见但不可用。2)和3)的状态要区分开。
三、进程状态
Android系统会尽可能保持应用进程存活,不过一旦资源紧张,Android会根据进程的优先级回收资源,kill掉优先级低的进程。这些优先级的高低,可以说是跟Activity生命周期息息相关的。
进程状态主要分以下几种,优先级从高到低排列:
1)前台进程
正在与用户进行交互的进程。就Activity来说,即那些执行onCreate()、onStart()、onResume()以及处于running的Activity。就目前Android设备的硬件配置而言,这种进程基本不会被系统回收;
2)可见进程
可被用户看见但是不具备与用户交互输入/出的进程,此时Activity可能执行onPause()。这种进程优先级仅次于1);
3)后台进程
不可见,并且没有一个处于running的服务的进程,此时Activity可能执行onStop()。系统中有大量这种后台进程;
4)空进程
Android的应用生存周期结束后,仍可能保留该应用的一部分缓存类,以方便再次启动时减少时间。这种进程优先级最低,当系统资源紧张时会最先被回收。
四、其他
Activity还有一些其他的知识点,比如Activity的栈管理,Activity与Intent的联系,由于篇幅关系,这些可能需要另开一篇文章做说明。关于Activity的一些基础今天就介绍到这里。
哦,对了,使用Activity前需要先在AndroidManifest.xml文件中注册,否则不能使用哦~
- 分享到: