【安卓开发系列 -- 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,碎片,广播,开发,Android,活动,安卓
来源: https://blog.csdn.net/qq_27788177/article/details/100714635