Android 官方文档学习笔记(1):Androiid以及相关应用组件概念
Android SDK介绍:
Android SDK 会将应用内容打包成一个.apk后缀的文件(包括了逻辑代码,应用所需要的资源文件)。对于Android应用系统,就一多用户的Linux系统,所有的应用都在该系统下的一个用户,每一应用会被系统分配一个唯一的ID。因此不同的应用都要自己的资源和进程。
Android对应用的数据保护(安全沙盒)有以下约束:
- 每一个应用由于都有自己的唯一id,因此除了人为将多个应用设置同一id情况下,不然应用不能访问彼此的资源。
- 每一个应用都有自己的进程和虚拟机,因此在需要运行的情况下Android系统会启动应用的进程,在不需要的情况下对进程的关闭释放内存。
- 对所有的应用实现了最小访问权限,即每一个应用只能访问自己需要的组件和资源,从而实现对应用的保护。(可以人为的设置不同的应用使用同一ID从而实现彼此资源的访问,亦或者通过应用对某一功能申请权限也可以实现使用其他资源的目的)
Android的应用组件介绍:
Android的应用组件作为程序入口,系统和用户可以通过这些入口访问应用程序,同时不用的应用组件之间也存在着依赖关系。同时不同的组件也有有自己的应用场景和生命周期,后者决定了组件的创建和销毁。
- 活动Activity
- 广播Broadcast
- 服务Service
- 内容提供者ContentProvider
Activity 活动:
Activity是用户与程序交互的主要的应用组件,一般占据整个屏幕(手机屏幕)尺寸大小。当存在多个Activity的时候,Activity之间相互独立不收影响,同时一个屏幕只允许一个Activity呈现出来(一旦启动了另一个Activity则会将当前的Activity放进后台)。合理使用Activity能有助于程序和系统对用户的交互体验。
- 通过Activity能够追踪用户感兴趣的内容,从而告诉系统需要保留哪些进程
- 通过Activiy能够获取用户之前所浏览的信息,从而保留更有用的内容
- 通过Activity能够帮组程序记录终止位置,能够更好地恢复原先的状态
- 通过Activity能够实现系统与应用程序之间的用户流交互(经典的例子:共享。)
Service 服务:
Service服务主要的应用场景是能够实现程序保持运行状态的情况下,允许用户执行其他的操作,例如浏览网页,打开其他应用程序等等。也就是说,更多时候服务是处于后台运行,和Activity对比,不具备可视化页面操作,服务的存在更多是实现在后台使得应用程序能够同步数据,或者保持程序的运行状态(经典例子:音乐播发器)。但还要注意的是,服务Service需要依赖于其他的应用组件来启动(Activity等),一旦Activity启动了服务之后,那么服务就会绑定在Activity中(Service服务的生命周期也与之有光)。现在服务有着更广阔的使用范围:例如动态壁纸,通知监听器等等。
Broadcast 广播:
Broadcast广播的存在,可以使得系统在用户流之外向应用程序传递事务。广播作为程序的入口,即使应用程序尚未运行,也可以通过由系统发送的广播,对广播接收后执行某些特定的响应。虽然广播能够处理一些特定的需求,但是广播的宗旨是处理极小量的工作任务,广播更多时候也应用于对一些可预测的事情向用户发送通知(天气预报,电量剩余量通知等等)
ContentProvide 内容提供程序:
ContentProvide更多时候是负责管理一组共享的应用数据,允许用户将数据保存在文件数据,SQLite数据库以及其他可允许访问的持久化位置。也允许用户对其中的数据读取或者修改(如果有一定的权限话),虽然ContentProvide内容提供程序提供了大量的API能够实现和数据库一样的功能,但从设计的角度来看本质上和数据库是两种不同的核心目的。
Android 官方文档学习笔记(1):Androiid以及相关应用组件概念相关推荐
- ZooKeeper官方文档学习笔记03-程序员指南03
我的每一篇这种正经文章,都是我努力克制玩心的成果,我可太难了,和自己做斗争. ZooKeeper官方文档学习笔记04-程序员指南03 绑定 Java绑定 客户端配置参数 C绑定 陷阱: 常见问题及故障 ...
- Open3D官方文档学习笔记
Open3D官方文档学习笔记 第一部分--点云 1 可视化点云 2 体素降采样 3 顶点法线评估 4 访问顶点法线 补充:Numpy在Open3D中的应用 5 裁剪点云 补充1:获取点云坐标 补充2: ...
- ZooKeeper官方文档学习笔记01-zookeeper概述
纠结了很久,我决定用官方文档学习 ZooKeeper概述 学习文档 学习计划 ZooKeeper:分布式应用程序的分布式协调服务 设计目标 数据模型和分层名称空间 节点和短命节点 有条件的更新和监视 ...
- Android 开发之ViewPage官方文档学习笔记
2019独角兽企业重金招聘Python工程师标准>>> 以下为官网的官方文档,我将从翻译该文档开始学习. ViewPager extends ViewGroup java.lang. ...
- vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...
- xarray官方文档 学习笔记(序章)
个人需要开了这个坑 不定时更新 希望能和大家共同学习和交流 工作中难免有不足和错误,希望大家多多批评指正 xarray官方文档首页:http://xarray.pydata.org/en/stable ...
- OpenCV-Python官方文档学习笔记(上)
整理自OpenCV-Python官方文档 一. OpenCV-Python Tutorials 1 安装及验证 2 图片读写,展示 3 视频读写,展示 4 绘图功能(绘制几何形状:线.圆.椭圆.矩形. ...
- kafka官方文档学习笔记2--QuickStart
下载kafka https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz 解压安装包 > tar ...
- kafka官方文档学习笔记3--配置简述
Kafka使用key-value键值对格式的配置,这些配置即可以在进程启动时,根据指定的properties文件加载,也可以通过编程的方式,在程序中动态指定:根据集群中角色的不同分为6种配置: bro ...
最新文章
- m.pythontab.com_Python expandtabs()函数的使用
- linux下汇编实例
- java.nio.ByteBuffer用法小结
- 个人博客四|注册登录退出功能后台开发
- Jquery_异步上传文件多种方式归纳
- MySQL基础一些概念一些用法
- js通过FormData对象 异步提交文件 实现文件上传(附带参数)
- 我是技术男,也曾创业过,也拿过风投......
- 交易方法我的总结仔细看看
- webpack之基础篇(四):webpack-dev-server介绍
- 紫书刷题记录 UVa12100 打印队列
- STM32的IAP在线升级
- HTTP协议简介和系统命令curl,AIP调用 (ELK中运用)
- 蓝桥杯 单片机 决赛 第7届 电压、频率采集设备
- 5G 与 MEC 边缘计算
- Laravel Excel(maatwebsite/excel )导入
- 百度清风算法打击下载违规网站说明
- itchat+在线聊天机器人接口实现微信聊天机器人
- [转]Android github上优秀开源项目分类汇总
- msbuild 语法_MSBuild 命令参数
热门文章
- centos添加硬盘
- vue——router更改路由地址,但是页面不能跳转
- Visio 2016去掉页边距(图形四周的空白区域)的解决办法 (适用于适应绘图)
- spring概念理解之IOC(控制反转)
- 第二章 SQL命令参考-REASSIGN OWNED
- 微信分享次数统计、微信公众号分享关注统计
- 常用ansible命令
- MOS管当开关控制时,一般用PMOS做上管NMOS做下管的原因
- 计算机搜索文件时找不到搜索按钮,win7搜索功能 为什么明明有那个文件却搜索不到呢?-win7搜索不到文件,win7搜索文件内容搜不出来...
- mysql 硬盘死机_磁盘空间不够导致mysql崩溃重启