android基本fundmentail
6.appliaction
fundamental应用程序的基本原理:
一旦初始化到了device上的时候,我们的安桌程序就处于了一个自己的安全沙箱中,
--1.安卓是一个基于linux的系统,
默认的每一个程序都有一个自己的程序user id,仅仅是被系统应用的,
系统的管理all
files权限permissions就是由此来标识了你的应用程序是否可以访问
每一个程序都有自己的virtual machine以至于每一个程序都不会妨碍其他的程序
每一个程序都在自己的linux的进程中,以至于每一个安卓的进程开始当你的程序启动的时候,
或者是关闭,并且回收内存当你的程序关闭的时候
in this way,这样的话就是:安卓系统就是秉承了“principle of least
privilage”最少的权限的原则。
你的程序是创建载客一个安全的环境中了,并且不会访问到系统没有给权限的部分!
然而,也有一种方法去分享其他程序的一些数据,
一种可能就是:你的程序之间共享你的linux 的user id,
这样的话,你的两个程序就可以共享相同的 文件,数据,运行在同一个linux
进程中,共享同一个vm。
一些程序可以请求权限,去接受你的用户的信息,比如是联系人,短消息,摄像头的使用等,
所有的程序的访问权必须在你的程序装载的时候。
如何去创建一个程序在你的系统中?
1.核心的框架容器定义在你的应用中,
2.manifest文件中声明你的容器和需要的设备特点为你的程序。
3.资源,分割资源,以至于你的应用可以更加优美的去对待不同的设备的配值
1.application
components
你的component是一个基本的区域对于你的安卓程序来说,在安卓中有四种容器去装载你的程序:
activity代表一个简单的用户界面的背景,一个个的activity是相互关联的,每一个activity都是继承了activity。
services是一个容器是运行在后台的执行操作的组件,继承了service
content
providers管理这应用的数据,你可以在文件系统中存储这些数据,sql
lite等,
用于去处理数据的操作,继承自 ContentProviders并且必须去继承标准的 set of apis
boradcast
receives 是一种相应系统的广播通知,比如说是电量低,图片的获取等,
仅仅是一种“gateway”(途径)去其他的容器,是做的少的工作。也可以初始化service对于事件基础的工作。
一个特殊的方面,你可以在你的app中开启一个camera
的一个activity去拍摄照片,
这样返回这个照片在你的程序中运用它,就好像在你的程序中有一个相机一样。
但是呢,你的开启的进程还是在属于carema 的进行中,并不在你的进程中。
在安卓中你想要去开启另一个程序中的compont你必须去发送一个消息给系统,以至于系统可以给你去开启一个容器!
activating components活动一个容器:
四个中的三个activity ,services,broadcast
receivers,是被激活由于intent调用的异步消息
,intent绑定了一个自己的容器相对域其他来说,在运行时!
intent是被创建由于intent对象
对于activities和services来说intent是被定义为了一个执行的动作
对于broadcast
receiver来说,intent是定义了被传播的通知,
当你的电池容量低的时候,你就会收到一个action String“battery is
low”
对于content provider是不会被激活,由intent,相反,他会被激活由于一个请求由contentresolver对象,
你可以传入一个intent到startactivity中去开启一个activity,或是传到startactivityforresult
你可以开启service通过传入一个intent到startservice,或是绑定intent到bindservice
你可以初始化broadcast通过传intent到sendbroadcast,sendorderbroadcast,sendstickybroadcast。
你可以执行query在contentresolver中
在安卓的程序开始之前的时候,系统必须知道app所存在的组件!通过androidMainfest。
xml你的程序必须去声明所有的容器在这个文件中:
1.定义所有用户所需的权限,比如:internet连接,或者是用户信息
2.声明所用的api的最小的版本,
3声明你所用的软件和硬件的使用,比如你所需的相机,蓝牙等
4.api的类库,比如说你需要去linkedgoogle
maps library的类库
声明一个容器,manifest的最主要的作用就要去声明你的所有的容器组件,
<manifest ... >
<application android:icon="@drawable/app_icon.png" ... >
<activity android:name="com.example.project.ExampleActivity"
android:label="@string/example_label" ... >
</activity>
...
</application>
</manifest>
在你的application中元素
icon是定义一个图标,
在activity的元素中,name是表示属性的类名,
label是一个用户的可视化label
你要声明所有的组件:<activity><service><receiver><provider>
你的activies和services和content
provider你不声明就不会出现,然而你的broadcast
receivers可以不声明,
但是可以有代码动态产生broadcastRecevier对象,并注册有调用registerReceiver()
你的程序的设备是要在manifest中声明的,以防手机不支持你的应用,并且要注意你的api是否是版本有效的,
你所注意的设备特性:
1.屏幕大小和分辨率:为了适应手机的屏幕特性,、
屏幕大小:small,normal,large,extra
large
分辨率:low density,medium density,high density,extra high
density
你应该在你的manifest中由<supports-screens>元素定义支持的屏幕大小!
2.输入配置,许多的设备都是提供了多种类型的用户环境,比如硬件的键盘等,
你应该声明由于你的<uses-configuration>中配置。
3,设备的特点:您应该设置<uses-feature>元素,去配置你的设别信息,
4平台版本:每一个版本都有一些不同的api,所以你要在<users-sdk>设置你的最小的api的版本
你的这些信息会出现在google play中的筛选,
资源的管理:
你的所有的资源都是包含在你的工程中的,都会定以一个integer
id为你的资源,
你可以运用这些引用,在你的代码中,并且会定义在xml中,
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。