1、让IT教学更简单,让IT学习更有效Android程序设计(Android Studio)第3章 Android应用程序目录 Android四大组件 Android应用程序生命周期 Android程序调试 Android应用程序权限学习目标 了解Android四大组件 掌握Android生命周期 掌握Android程序调试 了解Android应用程序权限3.1 Android四大组件3.1.1 Activity Activity是Android程序中最常用的组件,是应用程序的表示层,显示可视化的用户界面,接收与用户交互所产生的界面事件。一个Activity代表一个单独的屏幕,在其上可以添加多个用
2、户界面控件,如Button、TextView、EditView等 Activity一般通过View来实现应用程序的用户界面,相当与一个屏幕,用户与程序的交互是通过该类实现的。用户从一个屏幕切换到另一个屏幕的过程也是从一个Activity切换到另一个Activity的过程。3.1.2 Service Service一般用于没有用户界面,但需要长时间在后台运行的应用。实际上,Service是一个具有较长的生命周期但是并没有用户界面的程序。例如播放MP3音乐。Service一般由Activity启动,但是并不依赖于Activity,即当Activity的生命周期结束时,Service仍然会继续运行,
3、直到自己的生命周期结束为止。3.1.3 BroadcaseReceiver BroadcastReceiver是为用户接收并响应广播消息的组件,与Service一样没有界面,它唯一的作用是接收并响应消息。ContentProvider是用来实现应用程序之间数据共享的类。3.2 Android生命周期 Android程序生命周期是指Android程序中进程从启动到终止的所有阶段,即Android程序从启动到停止的全过程。Android系统中的进程优先级从高到低分别为前台进程、可见进程、服务进程、后台进程和空进程。前台进程指与用户正在交互的进程,是Android系统中最重要的进程。前台进程具有最高
4、优先级,通常前台进程的数量很少,几乎不会被系统终止,只有当内存极低以致无法保证所有的前台进程同时运行时,系统才会终止某个前台进程。前台进程主要有以下情况:(1)进程中包含处于前台的正与用户交互的Activity;(2)进程中包含与前台Activity绑定的Service;。(3)进程中包含调用了startForeground()方法的Service;(4)进程中包含正在执行onCreate()、onStart()或onDestory()方法的Service;(5)进程中包含正在执行onReceive()方法的BroadcastReceiver。可见进程指部分程序界面能够被用户看见,却不在前台与
5、用户交互,不响应界面事件的进程。可见进程包括:(1)进程中包含处于暂停状态的Activity,即调用了onPause()方法的Activity;(2)进程中包含绑定到暂停状态 Activity的Service;。服务进程:包含已启动服务的进程就是服务进程。服务没有用户界面,不与用户直接交互,但能够在后台长期运行,提供用户关心的重要功能,如播放MP3文件或从网络下载数据。后台进程:如果一个进程不包含任何已启动的服务,且没有任何用户可见的Activity,则它就是一个后台进程。一般情况下,Android系统中存在较多的后台进程,在系统资源紧张时,系统将优先清除用户较长时间没有见到的后台进程。空进程
6、:不包含任何活跃组件的进程,例如一个仅有Activity组件的进程,当用户关闭这个Activity后,该进程就成为空进程。空进程在系统资源紧张时会首先清除。3.2.2 Activity生命周期 Activity生命周期指Activity从启动到销毁的过程,在这个过程中,Activity一般表现为4种状态,分别是活动状态、暂停状态、停止状态和非活动状态。1.活动状态:是指当Activity在用户界面中处于最上层,用户完全看得到,能够与用户进行交互,则这时Activity处于活动状态。2.暂停状态:是指当Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户
7、进行交互,则这个Activity处于暂停状态。3.停止状态:是指Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡,则这个Activity处于停止状态。4.非活动状态:是指Activity所处的不在以上三种状态中的另一种状态。Activity启动后处于活动状态,此时的Activity处于最上层,是与用户正在进行交互的组件,因此Android系统会努力保证处于活动状态Activity的资源需求,资源紧张时可终止其他状态的Activity;如果用户启动了新的Activity,部分遮挡了当前的Activity,或新的Activity是半透明的,则当
8、前的Activity转换为暂停状态,Android系统仅在为处于活动状态的Activity释放资源时才终止处于暂停状态的Activity;如果用户启动新的Activity完全遮挡了当前的Activity,则当前的Activity转变为停止状态,停止状态的Activity将优先被终止;活动状态的Activity被用户关闭后,或暂停状态或停止状态的Activity被系统终止后,Activity便进入了非活动状态。3.3 Android程序调试 Android系统提供了LogCat调试工具,用于定位、分析及修复程序中出现的错误。在Logcat的操作栏上,有一个下拉选项,里面包含Assert(断言信息
9、)、Debug(调试信息)、Error(错误信息)、Info(通告信息)、Verbose(详细信息)、Warning(警告信息)等六个日志信息选项 Log.v()用来记录详细信息,Log.d()用来记录调试信息,Log.i()用来记录通告信息,Log.w()用来记录警告信息,Log.e()用来记录通错误信息3.4 Android应用程序权限 Android系统提供了丰富的SDK,开发人员可以根据其SDK开发Android中的应用程序。而应用程序对Android系统资源的访问需要有相应的访问权限,这个权限就是Android应用程序权限。3.4.1 AndroidManifest.xml清单文件
10、AndroidManifest.xml清单文件是整个Android应用程序的全局描述配置文件,也是每一个Android应用程序必须有,且放在根目录下的文件。AndroidManifest.xml清单文件对该应用的名称、所使用的图标以及所包含的组件等信息进行描述和说明。AndroidManifest.xml文件通常包含以下几项信息:声明应用程序的包名,包名是用来标识应用程序的唯一标识。描述应用程序组件,包括组成应用程序的Activity、Service、BroadcastReceiver和ContentProvider等,以及每个组件的实现类和其细节属性。确定宿主应用组件进程。声明应用程序拥有的
11、权限,使其可以使用API保护的内容与其应用程序所需的权限,同时声明了与其他应用程序组件交互所需权限。声明应用程序所需要的Android API的最低版本。列举应用程序所需要链接的库。3.4.2 Android权限机制 Android系统现在将所有的权限归成了两类,一类是普通权限,一类是危险权限。普通权限指的是那些不会直接威胁到用户的安全和隐私的权限,对于这部分权限申请,系统会自动帮我们进行授权,而不需要用户再去手动操作了。危险权限则表示那些可能会触及用户隐私或者对设备安全性造成影响的权限,如获取设备联系人信息、定位设备的地理位置等,对于这部分权限申请,必须要用户手动点击授权才可以,否则程序就无法使用相应的功能。Android普通权限的申请,是将权限声明的语句放置在标签之前就可以了。例如,当某个应用程序需要添加发送短信的权限时,申请代码如下:在Android系统中,一共定义了100多种permission供开发人员使用。访问https:/ 运行时权限 对于危险权限,除了需要在AndroidManifest.xml文件中添加一下权限声明外,还需要进行运行时权限处理。