Android期末复习重点

1、第一个版本Android 1.0 beta发布于2007年11月5日
2、Android支持高效、快速的数据存储方式:快速数据存储方式SharedPreferences、文件存储、轻量级关系数据库SQLite(Android 本身自带数据库)
3、Android的体系结构:Android是基于Linux内核的软件平台和操作系统,采用了软件堆层的架构,共分为四层,第一层为Linux内核,提供由操作系统内核管理的底层基础功能;第二层为中间件层,由函数库和Android运行时构成;第三层是应用程序框架层,提供了Android平台基本的管理功能和组件采用机制;第四层为应用程序层,提供了一系列核心应用程序。
4、Android开发语言主要为Java,开发平台主要为Android Studio
5、AndroidManifest.xml文件是整个Android项目的配置文件,项目的Manifest目录下。程序中所使用的组件均需要在该文件中注册,程序中所需的权限申明也在该文件中。每个Android程序必须在根目录下包含一个AndroidManifest.xml文件,mainfest元素仅能包含一个application元素,application元素中能够声明Android程序中最重要的四个组成部分,包括Activity、Service、BroadcastReceiver和ContentProvider。

< service android:name=".MyService" />(放在application标签中)
< activity android:name=”.FirstActivity”/>(放在application标签中)

6、Android应用程序由组件组成,组件是可以被调用的基本功能模块,Android系统包括4种重要组件,分别是Activity(活动)、Service(服务)、BroadcastReceiver(广播)和ContentProvider(内容提供者)
(1)Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件。Android程序通常包含一个或多个Activity,一般一个程序需要指定启动时显示的Activity。
(2)Service一般用于实现没有用户界面,但需要长时间在后台运行的功能。
(3)BroadcastReceiver是用来监听并响应广播消息的组件,其本身不包含任何用户界面,大部分广播信息由系统产生。
(4)Android系统提供的一种标准的共享数据的机制。程序通过ContentProvider访问其它程序提供的私有数据。私有数据可以是存储在文件系统中的文件,也可以是SQLite数据库中的数据(在当前Android系统中,不同程序之间的文件和数据库是无法直接共享的)。
7、Android程序文件夹结构:
在这里插入图片描述
Android程序中所需的资源均在res目录中,drawable文件夹存放程序所需的图片和XML文件,layout文件夹存放布局文件, setContentView(R.layout.activity_main)表示需要显示的用户界面,此界面是用XML语言描述的界面布局,保存在res/layout/activity_main.xml资源文件中。
8、Android系统能够主动的管理资源,为了保证高优先级的程序正常运行,可以在无任何警告的情况下终止低优先级的进程。因此,Android程序本身并不能完全控制自身的生命周期,Android系统会参与调度和控制
9、Android系统的进程优先级从高到低分别为:前台进程、可见进程、服务进程、后台进程、空进程。(五种进程和三种级别)
在这里插入图片描述
(1)前台进程是Android系统中最重要的进程,是与用户正在交互的进程;
(2)可见进程指部分程序界面能够被用户看见,却不在前台与用户交互,不响应界面事件的进程;
(3)一个包含已启动Service(服务)的进程。服务没有用户界面,不与用户直接交互,但长期在后台运行;
(4)空进程是不包含任何活跃组件的进程。
10、Activity组件生命周期四种状态的变换关系图:
在这里插入图片描述
Activity生命周期的四种状态,分别是活动状态、暂停状态、停止状态和非活动状态
活动状态是完全能被用户看到,与用户进行交互的状态;
暂停状态是Activity不处于用户界面的最上层,不能与用户进行交互的状态;
停止状态是指Activity在界面上完全不能被用户看到的状态;
除以上三种状态之外,就是非活动状态。

它们的变换关系是:当第一个Activity启动后,则Activity处于活动状态;如果启动新的Activity,部分遮挡先前的Activity,则先前的Activity转换为暂停状态;如果新启动的Activity完全遮挡了先前的Activity,则先前的Activity转换为停止状态;活动的Activity被用户关闭,或暂停状态或停止状态的Activity被系统终止后,都会转换成非活动状态
11、Activity生命周期的事件回调函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(每种生命周期中包含不同的事件回调函数)

全生命周期函数的调用顺序onCreate → onStart → onResume →
onPause → onStop → onDestroy
(前三个为启动时调用,后三个为结束时调用)。
在这里插入图片描述

可视生命周期函数的调用顺序onCreate → onStart → onResume →onPause → onStop 和onRestart → onStart → onResume(前一个为按下模拟器的“圆圈”键,后一个为按住模拟器“方块”键) 。
在这里插入图片描述
12、Android用户界面框架采用MVC(Model-View-Controller)模型即控制器(Controller)处理用户输入;视图(View)显示用户界面和图像;模型(Model)处理保存数据。
13、Android用户界面框架采用视图树(View Tree)模型由View和ViewGroup构成。View是最基本的可视单元,ViewGroup是一种能够承载含多个View的显示单元。
14、Android系统支持三种菜单:选项菜单(Option Menu)、子菜单(Submenu)、
快捷菜单(Context Menu)

选项菜单需要重写的函数:onCreateOptionsMenu和onOptionsItemSelected方法
快捷菜单需要重写的函数:onCreateContextMenu和onContextItemSelected方法
15、Fragment用途是在大屏幕设备上实现灵活、动态的界面设计,主要用于设计可重用模块。每个Fragment都有自己的布局和生命周期以及对应的回调函数,可以将同一个Fragment放置到多个不同的Activity中,Fragment无法独立存在。
在这里插入图片描述
16、Android提供两种方式的事件处理:1、基于监听器的事件处理;2、基于回调的事件处理
17、
(1)TextView:一种用于显示字符串的控件
(2)EditText:用来输入和编辑字符串的控件(EditText是一个具有编辑功能的TextView)
(3)Button:一种按钮控件,用户能够在该控件上点击,并后引发相应的事件处理函数
ImageButton:用以实现能够显示图像功能的控件按钮,除了Button的基本功能之外,还能显示程序制定的图标

android:src="@drawable/touch"指定了图片的位置,对应的是我们一开始在res/drawable文件夹下导入的touch.jpg文件。

(4)Checkbox:多选控件(继承于Button)
(5)RadioButton:单选控件(继承于Button)
(RadioGroup是RadioButton的承载体,程序运行时不可见。**应用程序中可能包含一个或多个RadioGroup,一个RadioGroup包含多个RadioButton.**在每个RadioGroup中,用户仅能够选择其中一个RadioButton.对于CheckBox和RadioButton来说,监听事件主要有两种,一种是单击事件,与button类似;另外一种是选项变更事件.)
(6)Spinner:一种能够从多个选项中选一个选项的控件,使用浮动菜单为用户提供选择(即下拉菜单)
(7)ListView:一种用于垂直显示的列表控件,如果显示内容过多,则会出现垂直滚动条。在有限的屏幕上提供大量内容供用户选择,是经常使用的用户界面控件
18、
(1)线性布局:LinearLayout
所有的子元素都按照垂直或水平的顺序在界面上排列。如果垂直排列,则每行仅包含一个界面元素;如果水平排列,则每列仅包含一个界面元素。

android:orientation="vertical"表示垂直排列方式,且android:layout_width="match_parent"和android:layout_height=“wrap_content”;android:orientation=“horizontal”,且android:layout_width="wrap_content"和android:layout_height=“wrap_content”,注意两个排列方式的宽度不同。

(2)框架布局:FrameLayout
主要用来在屏幕上组织特别的或重叠的视图控件。也称为帧布局。如果有多个控件,后放置的控件将遮挡先放置的控件,框架布局是作为任何布局资源的父布局来使用的。
(3)表格布局:TableLayout
通过指定行和列将界面元素添加到表格中,表格的边界对用户是不可见的。
(4)相对布局:RelativeLayout
能够通过指定界面元素与其他元素的相对位置关系,确定界面中所有元素的布局位置。
(5)绝对布局:AbsoluteLayout
能通过指定界面元素的坐标位置,来确定用户界面的整体布局,一般情况下不使用绝对布局。
(6)网格布局:GridLayout
将用户界面划分为网格,界面元素可随意摆放在网格中。,网格布局中行的高度和列的宽度,完全取决于本行或本列中,高度最高或宽对最宽的界面元素。

android:columnCount=””:设置该网格的列数量;
android:rowCount=””:设置该网格的行数量.
android:columnCount=“3”
android:rowCount=“4” 即表示三列四行。
android:layout_columnSpan=””:设置子组件横跨几列;
android:layout_rowSpan=””:设置子组件纵跨几行.(下标从0开始)

布局之间支持相互嵌套
19、意图Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息,接收组件在接收到Intent所传递的消息后,会执行响应的动作。Intent的一个最常见的用途就是启动Activity和Service;另一个用途是在Android系统上发布广播消息,广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。
20、Intent解析的匹配规则:
(1)Android系统把所有应用程序包中的Intent过滤器集合在一起,形成一个完整的Intent过滤器列表;
(2)在Intent与Intent过滤器进行匹配时,Android系统会将列表中所有 Intent过滤器的“动作”和“类别”与Intent进行匹配,没有指定“动作”的Intent过滤器可以匹配任何的Intent,但是没有指定“类别”的Intent过滤器只能匹配没有“类别”的Intent;
(3)把Intent数据Uri的每个子部与Intent过滤器的标签中的属性进行匹配;
(4)如果Intent过滤器的匹配结果多于一个,则可以根据在标签中定义的优先级标签来对Intent过滤器进行排序,优先级最高的Intent过滤器将被选择。以上每步中不匹配的都将被过滤掉。
21、Service是Android系统的服务组件,适用于开发没有用户界面且需要长时间在后台运行的应用功能
22、四种文件操作模式:
在这里插入图片描述
23、Service的基本原理和用途:Service能够长期在后台运行,适用于无需用户干预,且规则或长期运行的后台功能。首先,因为Service没有用户界面,更加有利于降低系统资源的消耗,而且Service比Activity具有更高的优先级,因此在系统资源紧张时,Service不会被Android系统优先终止。即使Service被系统终止,在系统资源恢复后Service也将自动恢复运行状态,因此可以认为Service是在系统中永久运行的组件。Service除了可以实现后台服务功能,还可以用于进程间通信(Inter Process Communication,IPC),解决不同Android应用程序进程之间的调用和通讯问题
为什么需要子线程:在Android系统中,Activity、Service和BroadcastReceiver都是工作在主线程上,因此任何耗时的处理过程都会降低用户界面的响应速度,甚至导致用户界面失去响应。当用户界面失去响应超过5秒后,Android系统会允许用户强行关闭应用程序(ANR)。将耗时的处理过程转移到子线程上,这样可以缩短主线程的事件处理时间,从而避免用户界面长时间失去响应
在新线程中如何改变界面:需要用到Handler的消息传递机制。Handler的一般用法是:在新启动线程中发送消息;主线程中获取并处理消息。Handler允许将Runable对象发送到线程的消息队列中,每个Handler实例绑定到一个单独的线程和消息队列上。当用户建立一个新的Handler实例,通过post()方法Runable对象从后台进程发给GUI线程的消息队列,当Runable对象通过消息队列后,这个Runable对象将被运行
24、Service的生命周期
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
函数调用顺序:
在这里插入图片描述
在这里插入图片描述
由调试可知,第一次使用startService方法调用Service时,系统将回调onCreate方法对Service进行初始化,并调用onStartCommand启动Service
第二次使用startService方法调用Service时,因为Service已有,系统不再回调onCreate方法,但会调用onStartCommand方法
使用stopService方法关闭已有Service,系统将回调onDestroy方法,释放Service。Service一旦释放,再通过stopService关闭将没有任何效果。
不是所有的Service都需要重载这三个方法,可以根据实际情况选择需要重载的方法。
在本实例中,onBind方法没有被回调(注意,在Service中onBind方法一定需要重写)。
25、服务绑定方式的函数调用顺序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
26、SQLite数据库的优势
(1)可以嵌入到使用它的应用程序中,提高了运行效率,屏蔽了数据库使用和管理的复杂性;
(2)客户端和服务器在同一进程空间运行,完全不需要进行网络配置和管理,减少了网络调用所造成的额外开销;
(3)简化了数据库的管理过程,应用程序更加易于部署和使用,只需要把SQLite数据库正确编译到应用程序中

27、


版权声明:本文为qq_44111805原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。