APP在Android中的运行机制(一)
来源:互联网 发布:php获取扩展名 编辑:程序博客网 时间:2024/05/16 14:07
(声明:此文从Android官方文档翻译摘录而来,可能存在翻译错误)
原文地址:http://developer.android.com/guide/components/fundamentals.html
在Android设备中,APP运行在独立的Linux虚拟机中,具有如下的一些特点:
- Android的APP运行在多用户的Linux系统上,每个APP都被当做是一个不同的用户(user)
- 默认情况下,系统假定每一个APP都拥有一个独特的 Linux user ID。在系统中,所有文件都需要相应的权限才能够访问,因此,只有拥有相应权限的 user ID 的APP 才能够使用系统的相关资源
- 每个APP进程(process)都拥有独立的虚拟机(virtual machine),使得Android的APP代码得以独立运行
- 每个APP都拥有独立的Linux进程。在需要的时候启动,不需要的时候关闭。
Android系统中的最低权限原则(the principle of least privilege):默认情况下,每个APP只能够使用完成自己功能所必须的组建,不必使用其它更多资源。这是的APP得以运行在安全的系统环境中。
当然,下面是一些让APP之间共享数据和APP使用系统服务的方法:
- 让两个APP使用相同的 Linux user ID 是允许的。在这种情况下,这两个APP能够访问对方的文件。为了节约系统资源,使用相同 Linux user ID 的APP可以运行在相同的Linux进程中,共享相同的虚拟机,前提是这些APP使用相同的签证(certificate)
- 所有APP都可以请求使用系统资源,但是必须在创建过程中完成权限配置
Android的四种基本功能组件:Activities、Services、Content providers、Broadcast receivers。
Activities——单窗口的用户接口(a single screen with a user interface)。每个Activity都是可以独立使用的
Services——后台持续运行的组建,不提供用户接口。可以通过Activity与Service的交互实现打开,或者关闭Service
Content provider——管理APP的交互数据
Broadcast recievers——接收系统的广播信息,不提供用户接口。但是会以 status bar notification 的方式通知用户接收到消息
Android的一个特色在于任何APP都能够使用其它APP的组件。以使用相机拍照为例,当系统已经有一个相机的拍照程序时,可以直接使用这个APP作为自己设计APP的组建,拍照时,使用这个APP进行拍照,而得到的照片结果返回给自己设计的APP。这样,在用户看来,这个过程使用的是一个APP。
Android中,可以通过 Intent 启动其它组件。但是,content provider 不能够通过 intent 启动。它是通过 ContentResolver启动。以下是一些启动Android组建的方法汇总:
- Activity可以通过 intent 中的 startActivity()或者 startActivityForResult() 方法实现
- Service可以通过 intent 中的 startService() 和 bindService() 方法打开和关闭 Service
- Broadcast可以通过 intent 中的 sendBroadcast(),sendOrderedBroadcast(),或者sendStickyBroadcast() 方法开启
- Content Provider 可以通过 ContentResolver中的 query() 方法实现
0 0
- APP在Android中的运行机制(一)
- APP在Android中的运行机制(二)——Manifest 文件
- Android 消息机制--Handler运行机制(一)
- HTML5----HTML在Browser中的运行机制(笔记篇)
- Android app开发中的比较麻烦的坑(一)
- 低功耗蓝牙(BLE)在 Android APP 中的应用
- App发布系列--苹果开发证书运行机制(一) Code Signing
- 深入探究Android中的Service的运行机制
- Android---App Widget(一)
- Android架构(一)MVP架构在Android中的实践
- ROS官方手机APP--Rocon Remocon在ROS concert中的使用(一)
- ROS官方手机APP--Rocon Remocon在ROS concert中的使用(一)
- Android Studio官方文档之在Android模拟器上运行App(一)
- 实例讲解java局部变量(包括形参)全局变量,对象应用在堆栈中的运行机制
- 安卓app运行机制:
- IOS后台运行机制详解(一)
- IOS后台运行机制详解(一)
- openstack--nova的运行机制分析(一)
- Redis分片理解实例
- freemarker整合structs2.0生成html
- Flask简易入门教程 一、小表砸helloworld,跑起来哟
- Spark存储与读取文件方法小结
- 和其他App分享简单的数据(2)从其他App中接收简单的数据
- APP在Android中的运行机制(一)
- java观察者模式
- HDMI-CEC Control Service (Android TV 二)
- System.arraycopy 方法
- iOS8开发~UI布局(一)初探Size Class
- 求topK 思路总结
- NDK/Jni底层获取root权限的四种思路
- 总结Java的各个版本的代号
- MD5加密算法