Android复习
一、简介
- Android是一种以Linux与java为基础的开发源代码程序
- 绿色机器人形象在2007年诞生
- 手机操作系统
- Android
- Symbian
- iOS
- Windows Mobile
- Windows Phone
- 黑莓
- 技术架构
- 操作系统:底层以Linux核心为基础,包含各种驱动,只提供基本功能,内存管理,进程管理,
- 中间层
- 应用程序架构
- 应用软件
- JNI是java平台的一部分,他允许java代码和其他语言写的代码进行交互。
- Android应用程序的四大组件
- 活动(Activity)
- 广播(Broadcast)
- 服务(Service)
- 内容提供器(Content Provider)
- Android的优势
- 开源性
- 硬件丰富性
- 开发便捷性
- Android运行时由 Android核心库集 和 虚拟机ART 组成
二、Android GUI开发
-
APP设计步骤
- 原型设计
- 数字工具实现
- 用户测试
-
设计原则
- 坚持松散耦合的理念
-
用户界面框架(MVC)
- 控制器(Controller):处理用户输入
- 视图(View):显示用户界面和图像
- 模型(Model):保存数据和代码
-
View类
- View是Android中最基础的类之一
- 所有在界面上可见的元素都是View的子类
- 类的视图结构是android.view.View
- View的直接继承者包括文本视图(TextView),图像视图(ImageView),进度条(ProgressBar)
- 主要提供了控件绘制和事务处理的方法
-
ViewGroup是个特殊的View
- ViewGroup是布局管理器(layout)及view容器的基类
- 他可以充当其他控件的容器
-
View及其子类的相关属性,既可以在布局XML文件中进行设置,也可以通过成员方法在代码中动态设置。任何继承自View的子类都拥有View类的属性及对应方法。
-
Android创建布局的方法
- xml文件布局方式,使用xml文件描述界面布局
- 程序代码创建,在程序运行时动态添加或修改界面布局
- xml文件和程序代码创建相结合
-
常用布局
- 线性布局(LinearLayout)
- orientation(方向)
- layout_weight(权重)
- 表格布局(TableLayout)
- 网格的边界对用户是不可见的
- 帆布局(FrameLayout)
- 相对布局(RelativeLayout)
- 相对布局是最灵活,最强大,也是学习难度最大的布局
- 网格布局(GridLayout)
- 线性布局(LinearLayout)
-
Android事务处理机制简介
- 事件处理模型,涉及对象
- Event Source(事件源):一般指各个组件
- Event(事件):一般是指用户操作,改事件封装了界面组件上发生的各种特定事件
- Event Listener(事件监听器):负责监听事件源所发生的事件,并对该事件作出响应
- 实现方式
- 直接实现接口的处理方式
- 内部类处理方式
- 匿名内部类处理方式
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDsQqAMs-1598326980901)(C:\Users\DELL\Desktop\图片库\QQ图片20200708144029.png)]
- 事件处理模型,涉及对象
-
列表控件(ListView)
- 如果显示内容过多,会出现垂直滚动条
- ListView能够通过适配器将数据和自身绑定
-
适配器(Adapter)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WZlHDp68-1598326980902)(C:\Users\DELL\Desktop\图片库\QQ图片20200708145901.png)]
-
LayoutInflater
- 用法类似findViewById()
- LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化
-
Android系统支持的菜单
- 选项菜单(Option Menu)
- 子菜单(Submenu)
- 上下文菜单(Context Menu)
编写菜单程序一般包括创建和初始化菜单项和菜单项事件处理两个步骤
三、Activity
-
Activity是Android应用程序中最基本的组成单位
-
Activity是Android程序的表现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件
-
Activity本身是没有界面的,所以activity类创建了一个窗口,通过setContentView(View)接口把UI放到activity创建的窗口上
-
生命周期
- 激活状态:Activity的初始状态,所有的Activity必须经历这个状态。
- 运行状态:这时的Activity运行在屏幕的前台
- 暂停状态:这时Activity失去了焦点但是仍然对用户可见
- 暂停状态:这时Activity对用户不可见,所以其窗口会被其他Activity覆盖
- 终止状态:这时Activity会被系统清理出内存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUIQFleD-1598326980903)(C:\Users\DELL\Desktop\图片库\QQ图片20200708152558.png)]
-
onCreate:在这里创建界面,做- -些数据的初始化工作;
-
onStart:到这一 步变成 “用户可见不可交互”的状态;
-
onResume: Activity 正式进入用户的视线(可视可交互);
-
onPause:当跳转到别的页面,Activity一般将进入后台执行此方法;
-
onStop:当Activity长时间处于后台时调用;
-
onDestroy:当Activity要被销毁时调用;
-
onRestart: 当Activity处于后台, 且未被回收时,重新回到此Activity调用
-
Android系统使用栈来管理
- 只有当这个新的Activity退出以后,之前Activity才能重新回到前台界面
- 由同一个应用启动的Activity默认都在同一个任务栈中(Task)
-
Intent负责对应用中一次操作的动作,动作涉及数据,附加数据进行描述
-
Android支持的启动方式
- standard:就是intent将发送给新的实例,所以每次跳转都会生成新的activity
- singleTop:也是发送新的实例,但不同于standard的一点是,在请求的Activity正好位于栈顶时,不会构成新的实例
- singleTask
- singleInstance
四、Service
-
Service用于创建Android的后台服务
-
Service可以从系统启动时一直持续到系统关闭时才结束
-
Service运行方式
- 运行在他自己的进程中
- 运行在其他应用程序进程的上下文里面
-
Service生命周期
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RfsM85hS-1598326980906)(C:\Users\DELL\Desktop\图片库\QQ图片20200708160331.png)]
-
onCreate() :当Service第- -次被创建后立即回调该方法,该方法在整个生命周期中只会调用一次!
-
onDestory() :当Service被关闭时会回调该方法,该方法只会回调一次!
五、广播(Broadcast)
-
特点:
- 基于Broadcast的应用程序最少要有两个类文件
- 一个主Activity,用来发送广播
- 一个是广播接收器BroadcastReceiver
- BroadcastReceiver本身并不实现用户界面
- BroadcastReceiver不需要一直运行
- 基于Broadcast的应用程序最少要有两个类文件
-
广播事件处理属于系统级的时间处理(一般事件处理是属于View级的事件处理)
-
静态注册和动态注册
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M89rjJQq-1598326980908)(C:\Users\DELL\Desktop\图片库\QQ图片20200708161627.png)]
-
普通广播和有序广播
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yM4y4bmy-1598326980910)(C:\Users\DELL\Desktop\图片库\QQ图片20200708161702.png)]
-
接收系统广播
- Broadcast包括系统广播和自定义广播
- 系统广播是系统自带的广播事件,不需要用户自己定义就可以直接接收使用
- 用户只需要实现广播接收器的注册和接收即可
六、Widget
- Widget就是一种放在桌面上的小程序即窗口小部件
- 这些小部件本身也是Android的应用程序
- Widget中并不支持所有的Android组件
- AppWidgetProvider定义的触发方法
- onUpdate():是最重要的回调函数
- onDelete():当Widget被删除时调用该函数
- onEnabled(): 当Widget 第一次被添加时调用。
- onDisabled(): 当最后一个Widget 被删除时调用该方法,用来清理之前在onEnabled) 中进行的操作。
- onAppWidgetOptionsChanged(): 当Widget 第一 次被添加或者大小发生变化时调用该方法,可以在此控制Widget 元素的显示和隐藏
七、数据存储
- Android数据存储的方式
- 使用SharedPreferences存储数据
- 文件存储数据
- SQLite数据库存储数据
- SQLite是一个免费,开源的数据库系统
- 具有相当小的内存占用和告诉的响应
- 特点
- 安装文件小
- 支持多操作系统
- 支持多语言
- 处理速度快
- 使用ContentProvider存储数据
- 使用ContentProvider存储数据
- 网络存储数据
- 数据的共享方式可以分为:应用程序内自用和数据被其他应用程序共用享
八、消息处理机制
- ANR(程序无响应):为了避免ANR,通常把耗时操作放在子线程里面去执行,因为子线程不能更新UI,所以当子线程需要更新的UI的时候就需要借助到安卓的消息机制,也就是Handler机制了。
- 主线程:用于运行四大组件和他们用户的交互
- 消息机制:不同线程之间的通信
- 作用:避免ANR