【安卓开发系列 -- APP】APP 开发基础技术整理
【安卓开发系列 -- APP】APP 开发基础技术整理
【1】Android Studio APP 项目目录布局
【2】活动的生命周期
活动的状态 :
- 1. 运行状态,一个活动位于返回栈栈顶时,活动处于运行状态;
- 2. 暂停状态,一个活动不再处于栈顶,但仍然可见;
- 3. 停止状态,一个活动完全不处于栈顶并且完全不可见;
- 4. 销毁状态,一个活动从栈顶移除;
活动的启动模式
- 1. Standard,在不进行显示指定的情况下,所有活动默认使用该模式,该模式下系统不会判断活动是否已经存在于返回栈中,每次启动都会创建该活动的一个新的实例;
- 2. SingleTop,若该活动已经处于栈顶,则可以直接使用该活动,不再创建新的活动实例;
- 3. SingleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,若发现已经存在可以直接使用的该活动的实例,并将该活动之上的所有活动全部出栈,若没有发现则创建一个新的活动的实例;
- 4. SingleInstance,启动一个新的返回栈用于管理该活动,多用于解决共享活动实例的问题;
【3】碎片探究
碎片,一种可以嵌入在活动当中的 UI 片段,它能够更加合理和充分地利用大屏幕的空间;
手机和平板的 UI 设计方案
碎片的生命周期
- 1. 运行状态,碎片是可见的,并且它所关联的活动正处于运行状态;
- 2. 暂停状态,一个活动进入暂停状态时,与它相关联的可见碎片便会进入到暂停状态;
- 3. 停止状态,一个活动进入停止状态时,与它相关联的可见碎片便会进入到停止状态,或者通过调用 FragmentTransaction 的 remove()、 replace() 方法将碎片从活动中移除,但在事务提交之前调用 addToBackStack() 方法时碎片也会进入停止状态;进入停止状态的碎片对于用户是完全不可见的,可能会被系统回收;
- 4. 销毁状态,一个活动被销毁时,与其相关联的碎片便会进入到销毁状态,或者通过调用 FragmentTransaction 的 remove()、 replace() 方法将碎片从活动中移除,但在事务提交之前没有调用 addToBackStack() 方法时碎片也会进入销毁状态;
常用限定符
【4】安卓广播机制
安卓广播类型
- 1. 标准广播,完全异步执行的广播,广播发出后所有的广播接收器同时受到广播消息;
- 2. 有序广播,同步执行的广播,同一时刻只有一个广播接收器能够接收到这条广播消息,并且前面的广播接收器能够截断广播的传递;
【5】数据存储 -- 持久化技术
Android 提供了 3 种简单实现数据持久化功能的方式
- 1. 文件存储,不对存储的内容进行任何格式化的处理,适合存储简单的文本数据或二进制数据;
- 2. SharedPreference 存储,使用键值对方式存储数据,支持多种不同的数据类型存储;
- 3. 数据库存储,SQLite 和 LitePal;
SQLite : 一款轻量级的关系型数据库,运算速度快且占用资源少,支持 SQL 语法,遵循 ACID 事务;
LitePal : 开源的 Android 数据库框架,采用对象关系映射(ORM)的模式,封装了常用的一些数据库功能;
对象关系映射(ORM) : 将面向对象的语言和面向关系的数据库之间建立的一种映射关系;
【6】跨程序共享数据 -- 内容提供器
内容提供器,用于在不同的应用程序之间实现数据共享的功能,提供完整的机制使得一个程序可以访问另一个程序中的数据,同时还能保证被访问数据的安全型;内容提供器可以有选择性的确定共享的数据;
运行时权限
Android 权限分类 :
- 1. 普通权限,不会直接威胁到用户的安全与隐私的权限,这些权限系统会自动帮助我们进行授权;
- 2. 危险权限,涉及用户隐私等重要信息,必须由用户授权;
Android 中的所有危险权限统计表
注意 : 表格中每个危险权限都属于一个权限组,在进行运行时权限处理时使用的时权限名,用户一旦同意授权,意味着该权限对应的权限组中所有的其他权限也会同时被授权;
访问其他程序中的数据
- 1. 使用现有的内容提供器
- ContentResolver 类,通过 Context 中的 getContentResolver()方法获取该类的实例,借助 ContentResolver 进行 CRUD 操作即可;
- 2. 使用自定义的内容提供器
- 自定义一个内容提供器并继承 ContentProvider 类,实现其中的抽象方法;
【7】Android 服务
服务,Android 中实现程序后台运行的解决方案,适合于处理那些不需要和用户交互而且需要长期运行的任务;
注意 : 服务依赖于创建服务时所在的应用程序进程;
Android 多线程
Android 的多线程技术与 JAVA 类似;
Android 异步消息处理机制
组成构件 : Message、Handler、MessageQueue、Looper;
- Message : 线程之间传递的消息;
- Handler : 用于发送和处理消息,发送消息 : Handler.sendMessage() 方法,处理消息 : Handler.handleMessage() 方法;
- MessageQueue : 消息队列,用于存放通过 Handler 发送的消息,每个线程中只会存在一个 MessageQueue 对象;
- Looper : 用于管理 MessageQueue,调用 Looper 的 loop() 方法后,便进入一个无限循环当中,每当发现 MessageQueue 中存在一条消息,便将消息取出,传递到 Handler 的 handleMessage() 方法中;每个线程中只会存在一个 Looper 对象;
服务的生命周期
生命周期调用
1)启动Service服务
单次:startService() —> onCreate() —> onStartCommand()
多次:startService() —> onCreate() —> onStartCommand() —> onStartCommand()
2)停止Service服务
stopService() —> onDestroy()
3)绑定Service服务
bindService() —> onCreate() —> onBind()
4)解绑Service服务
unbindService() —> onUnbind() —> onDestroy()
5)启动绑定Service服务
startService() —> onCreate() —> onStartCommand() —> bindService() —> onBind()
6)解绑停止Service服务
unbindService() —> onUnbind() —> stopService() —> onDestroy()
7)解绑绑定Service服务
unbindService() —> onUnbind(ture) —> bindService() —> onRebind()
参考
本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。
【安卓开发系列 -- APP】APP 开发基础技术整理相关推荐
- iOS开发系列--IOS程序开发概览ios基础
iOS开发系列--IOS程序开发概览 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的I ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.6 本章小结
本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.6节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.5节光照的每顶点计算与每片元计算...
本节书摘来自异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.5节光照的每顶点计算与每片元计算,作者 吴亚峰,更多章节内容可以访问云栖社区&q ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...
本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.1节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...
- IOS开发系列--IOS程序开发概览
IOS开发系列--IOS程序开发概览 2014-08-04 19:42 by KenshinCui, 9983 阅读, 51 评论, 收藏, 编辑 概览 终于到了真正接触IOS应用程序的时刻了,之前我 ...
- Unity+Vuforia SDKAR开发系列教程--1.1 AR技术介绍
1.1 AR技术介绍 提起AR技术,相信真正了解它的人还不多,或者是大多数的人都会第一时间把这种技术和各种各样的智能穿戴设备例如谷歌眼镜.智能手表等联系起来.其实,AR应用的领域是非常广的,并不仅仅局 ...
- RK3568平台开发系列讲解(驱动基础篇)RK 看门狗的使用
- 【Java Web开发指南】Spring一些基础问题整理
文章目录 1. 请简述文件上传时中文乱码的解决思路(4分),并写出文件上传表单的基本示例代码(4分) 2. 请简述如何实现登录验证 3. 请简述使用包装 POJO 类型数据绑定时,前端请求的参数名编写 ...
- 涂鸦智能模组SDK开发系列课程——SoC开发环境搭建(一)
SoC开发环境搭建 本章节主要介绍如何搭建涂鸦 Wi-Fi 和 Wi-Fi&Bluetooth LE 系列模组二次开发的编译环境.在 Windows 上使用 VirtualBox 虚拟机软件安 ...
最新文章
- 如何使用 Spinnaker 和 Kubernetes 进行数据库变更发布?
- HTML-DIV布局
- ad 原理图差分线_Altium差分线如何从原理图到PCB布线?
- day28 socket网络编程
- 关于在hue当中执行定时任务,时间的设置。
- 仿OUTLOOK2007 多样化摺叠菜单
- 阅读构建之法10、11、12章
- S1304第一本书内测测试分析
- Mac系统功能快速切换状态栏小工具One Switch for Mac
- Verilog仿真器
- 应用计算机怎么弹ink,Win10不小心按W键结果弹出INK工作区的处理方法
- 零基础入门学Python(十二)—— 魔法方法(下)
- 层次模型的概念,举出三个层次模型的实例!
- 新闻简报 365资讯简报 热点新闻早知道
- 心跳PING PONG用法
- matlab绘制世界地图(含国界)、中国地图(含省界),可下载m_map和shp文件
- YOLOv5改进添加解耦头、ASFF
- 2023计算机毕业设计SSM最新选题之java书籍审阅系统dmp8d
- 【Keychron K3】一款兼容Mac系统的矮轴机械键盘 | 推荐
- 科海思电镀废水除重金属树脂案例CH-90