美文网首页
android 应用基础知识

android 应用基础知识

作者: 弑神指 | 来源:发表于2021-12-30 10:51 被阅读0次

每个 Android 应用都处于各自的安全沙盒中,并受以下 Android 安全功能的保护:

Android 操作系统是一种多用户 Linux 系统,其中的每个应用都是一个不同的用户;
默认情况下,系统会为每个应用分配一个唯一的 Linux 用户 ID(该 ID 仅由系统使用,应用并不知晓)。系统会为应用中的所有文件设置权限,使得只有分配给该应用的用户 ID 才能访问这些文件;
每个进程都拥有自己的虚拟机 (VM),因此应用代码独立于其他应用而运行。
默认情况下,每个应用都在其自己的 Linux 进程内运行。Android 系统会在需要执行任何应用组件时启动该进程,然后当不再需要该进程或系统必须为其他应用恢复内存时,其便会关闭该进程。

应用仍可通过一些途径与其他应用共享数据以及访问系统服务:

1 . 可以安排两个应用共享同一 Linux 用户 ID,在此情况下,二者便能访问彼此的文件。为节省系统资源,也可安排拥有相同用户 ID 的应用在同一 Linux 进程中运行,并共享同一 VM。应用还必须使用相同的证书进行签名

  1. 应用可以请求访问设备数据(如用户的联系人、短信消息、可装载存储装置(SD 卡)、相机、蓝牙等)的权限。用户必须明确授予这些权限。如需了解详细信息,请参阅使用系统权限

应用组件

应用组件是 Android 应用的基本构建块。每个组件都是一个入口点,系统或用户可通过该入口点进入您的应用。有些组件会依赖于其他组件。

共有四种不同的应用组件类型:

Activity
服务
广播接收器
内容提供程序

启动组件

每种组件都有不同的启动方法:

  • 如要启动 Activity,您可以向 [startActivity()](https://developer.android.com/reference/android/content/Context#startActivity(android.content.Intent))[startActivityForResult()](https://developer.android.com/reference/android/app/Activity#startActivityForResult(android.content.Intent, int)) 传递 [Intent](https://developer.android.com/reference/android/content/Intent)(当您想让 Activity 返回结果时),或者为其安排新任务。
  • 在 Android 5.0(API 级别 21)及更高版本中,您可以使用 [JobScheduler](https://developer.android.com/reference/android/app/job/JobScheduler) 类来调度操作。对于早期 Android 版本,您可以通过向 [startService()](https://developer.android.com/reference/android/content/Context#startService(android.content.Intent)) 传递 [Intent](https://developer.android.com/reference/android/content/Intent) 来启动服务(或对执行中的服务下达新指令)。您也可通过向将 [bindService()](https://developer.android.com/reference/android/content/Context#bindService(android.content.Intent, android.content.ServiceConnection, int)) 传递 [Intent](https://developer.android.com/reference/android/content/Intent) 来绑定到该服务。
  • 您可以通过向 [sendBroadcast()](https://developer.android.com/reference/android/content/Context#sendBroadcast(android.content.Intent))[sendOrderedBroadcast()](https://developer.android.com/reference/android/content/Context#sendOrderedBroadcast(android.content.Intent, java.lang.String))[sendStickyBroadcast()](https://developer.android.com/reference/android/content/Context#sendStickyBroadcast(android.content.Intent)) 等方法传递 [Intent](https://developer.android.com/reference/android/content/Intent)来发起广播。
  • 您可以通过在 [ContentResolver](https://developer.android.com/reference/android/content/ContentResolver) 上调用 [query()](https://developer.android.com/reference/android/content/ContentProvider#query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal)),对内容提供程序执行查询。

清单文件

在 Android 系统启动应用组件之前,系统必须通过读取应用的清单文件 (AndroidManifest.xml) 确认组件存在。您的应用必须在此文件中声明其所有组件,该文件必须位于应用项目目录的根目录中。

除了声明应用的组件外,清单文件还有许多其他作用,如:

  • 确定应用需要的任何用户权限,如互联网访问权限或对用户联系人的读取权限。
  • 根据应用使用的 API,声明应用所需的最低 API 级别
  • 声明应用使用或需要的硬件和软件功能,如相机、蓝牙服务或多点触摸屏幕。
  • 声明应用需要链接的 API 库(Android 框架 API 除外),如 Google 地图库

相关文章

  • Android 应用基础 - 理解位和字节

    了解 Android Studio 基础知识和 Android 应用程序结构的完整指南 你好呀! 在Android...

  • Android签名认证分析

    **一.Android签名验证流程基础知识及源码解析:**** Android应用程序签名过程分析:http://...

  • app性能优化(转)

    Android面试——APP性能优化Android应用性能优化基础知识。布局优化避免OverDraw过渡绘制优化布...

  • Android从入门到精通

    完整教程https://www.daimapi.com/android/ 应用基础知识 介绍 构建您的第一个应用 ...

  • Android教程

    完整教程 https://www.daimapi.com/android/ 应用基础知识 介绍 构建您的第一个应用...

  • Android中文文档

    完整教程https://www.daimapi.com/android/ 应用基础知识 介绍 构建您的第一个应用 ...

  • Android面试题汇总

    Activity相关 Android 基础知识 Activity 的几种启动模式及应用场景 onSaveInsta...

  • Android注解全面解析

    一、注解知识体系 二、基础知识 必备基础知识:了解注解 三、注解在Android中的应用 1. 利用注解代替枚举 ...

  • Android 开发文章汇总

    1. Android 基础知识系列 1.Android 基础知识之 Activity 2.Android 基础...

  • Android 应用基础知识

    本文是这篇文章的精简版:安卓官方教程 - 应用基础知识 安全沙箱 为什么各个应用之间是无法互相访问文件的?VM和l...

网友评论

      本文标题:android 应用基础知识

      本文链接:https://www.haomeiwen.com/subject/zfiafrtx.html