应用基础

app用Java语言编写,以apk为后缀。

apk运行在自身安全的沙盒中:

  • Android是多用户Linux系统,每个app就是一个不同的用户
  • 默认的,系统给每个app分配唯一的Linux用户ID,并设置访问权限
  • 每个进程有自己的虚拟机VM
  • 默认的,每个app运行在自己的Linux进程

android系统实行最小权限原则。

然后,有两种方式可以在不同app之间共享数据或者使用系统服务:

  • 两个app共享相同的Linux用户ID,他们就能互相访问各自的文件,app必须是相同签名的
  • app可以申请权限去访问终端数据,比如用户联系人,短信息,SD卡,相机,蓝牙等等,所有app权限都必须在安装时由用户授权。

app组件

Activities

呈现单屏UI界面

Services

长时间在后台运行,无界面

Content providers

管理共享的app数据集,存储方式包括文件系统、SQLite数据库、Web或者app能够访问的任意存储位置

Broadcast receivers

广播响应全系统的广播通知,无界面,可以创建状态栏的通知

启动组件

Intent

startActivity(), startActivityForResult()

startService(), bindService()

sendBroadcast(), sendOrderedBroadcast(), sendStickyBroadcast()

ContentResolver.query()

Manifest文件

定义组件

  • <activity>
  • <service>
  • <receiver>
  • <provider>

activity, service, content provider 必须是在manifest里面静态注册,而broadcast可以动态注册

定义组件能力

显式指定组件类名来启动,或者隐式地通过intent filter来定义

定义app依赖项

Android终端众多,为了保证app能够在任意终端运行,需要定义app依赖运行的软硬件条件,比如,你的app需要照相功能并且运行在Android2.1(API LEVEL 7)版本之上,你需要定义如下依赖项:

<manifest ... ><uses-feature android:name="android.hardware.camera.any"android:required="true" /><uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />...
</manifest>

这样Google Play检测到当前设备没有照相功能或者Android版本低于2.1就不能安装你的应用。

如果你的app要用到照相功能,但不是必须使用,那可以将android:required设置为false,然后在运行时动态检查设备是否具有照相功能,来兼容不同的设备。

app资源

任何一个非代码的资源文件,SDK编译工具会定义一个唯一的整型ID,这样能够被代码或其他资源索引到。

资源文件夹支持多种限定词来进行全球化、横竖屏等多场景的兼容。

转载于:https://www.cnblogs.com/konger/p/3896051.html

Develop系列-API Guides-简介-应用基础相关推荐

  1. 2.JSR简介 - JavaEE基础系列

    JSR, Java Specification Request, Java规范请求; 也有的地方翻译为Java规范提案. 在前面的文章 1. Java EE简介 - JavaEE基础系列中, 简要介绍 ...

  2. Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)

    文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...

  3. OpenTSDB的/ API / PUT(opentsdb的输入的api)简介

    写在前面,这里是补充宇毅的博客内容翻译几篇文档,补充下java代码的一些实现,参考文献和其他文章列表放在末尾 翻译原文档http://opentsdb.net/docs/build/html/api_ ...

  4. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  5. C#多线程编程系列(二)- 线程基础

    目录 C#多线程编程系列(二)- 线程基础 1.1 简介 1.2 创建线程 1.3 暂停线程 1.4 线程等待 1.5 终止线程 1.6 检测线程状态 1.7 线程优先级 1.8 前台线程和后台线程 ...

  6. PyTorch C++ API libtorch 简介

    PyTorch C++ API libtorch 简介 翻译自 PyTorch 官方文档:https://pytorch.org/cppdocs/index.html#acknowledgements ...

  7. PyTorch学习笔记(二):PyTorch简介与基础知识

    往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: PyTorch学习笔记(一):PyTorch环境安 ...

  8. 基于jdk8 LocalDate系列API的全新实用时间工具类

    基于jdk8 LocalDate系列API的实用时间工具类, 已经经过多个项目的考验与完善, 包含个人心得体会 欢迎转载,转载请注明网址:https://blog.csdn.net/qq_419102 ...

  9. Android API 指南 - Android API Guides

    http://developer.android.com/intl/zh-CN/guide/components/index.html ) 请找到自己要翻译的部分,按下面的'链接规范'添加到下面列表中 ...

最新文章

  1. 盖茨、奥巴马、马斯克账号被黑,推特遭大规模黑客攻击
  2. 数据中心在未来数据管理中的作用
  3. praying,blessing,wishing
  4. long logn的大小c语言,基本排序(C语言版) - ________MX的个人页面 - OSCHINA - 中文开源技术交流社区...
  5. java process exe.exec 执行exe程序
  6. 拥抱PostgreSQL,红帽再表态:SSPL的MongoDB坚决不用
  7. css布局难,运用 CSS布局到底有多难?[多图]
  8. freeswitch安装步骤(源码编译安装)
  9. 有监督学习,无监督学习,半监督学习和强化学习
  10. linux数据库能看到系统执行了哪些命令,Linux-Mysql常用命令(上)
  11. android实时声音信号波形_android绘制播放音频的波形图
  12. 有妇如此,夫复何求!
  13. 【Centos】查询命令
  14. CSS设置html网页背景图片 CSS设置网页背景颜色
  15. js关闭当前的弹窗页面
  16. 《人类简史》--摘录
  17. JS如何向对象中添加元素
  18. OWL操盘主图可视化解读
  19. 神经元的细胞体有什么用,神经元细胞和神经细胞
  20. eclipse Jad class文件反编译插件安装及net.sf.jadclipse_3.3.0.jar和jad.exe下载地址

热门文章

  1. LeetCode #43字符串相乘
  2. 【C++】C++类的学习(一)——初识类
  3. 图像基础知识 —— Opencv图像处理
  4. leetcode —— 面试题17. 打印从1到最大的n位数
  5. 改善深层神经网络:超参数调整、正则化以及优化——2.3指数加权平均
  6. leetcode - 1021. 删除最外层的括号
  7. MyBatis框架 动态SQL
  8. CentOs基础操作指令(文件目录类)
  9. 天池-新闻推荐-数据分析
  10. 使用pytorch查看中间层特征矩阵以及卷积核参数