Android操作系统

  Android是一个基于Linux、使用java作为程序接口的操作系统。

  他提供了一些工具,比如编译器、调试器、还有他自己的仿真器(DVM — Dalvik Virtual Machine)。

  Android是由google领导的Open Handset Alliance开发的。

  Android使用的虚拟机比较特别。Dalvik使用了一些特别的方法。你在Android上不能运行普通的Java程序。

  Android提供了一个dx的工具,可以把普通的Java类文件转换为dex(Dalvik Executable)文件。

  Android程序最后通过aapt(Android Asset Packaging Tool)程序来打包成一个.apk文件。

  Eclipse下面的ADT可以自动将class转换为dex,然后在发布的时候打包成apk文件。

  Android支持2D和3D的openGL图形库,支持SQLite数据库。

  每一个Android程序都运行在Android系统分配的一个独立的空间内,所以每个程序都不会影响和破坏到其他的程序,这是很安全的。

一些重要的Android组件

  一个Android程序由下面这些部分组成。

  • Activity:代表了Android程序的展现层,比如用户看到的界面。一个Android程序可能会有几个Activities,在程序运行过程中也会切换。
  • Views:一个Activities的用户界面是继承自android.view.View。views的布局通过android.view.ViewGroups来管理。
  • Services:不需要UI展现的后台任务。可以通过android的提醒框架给用户提示。
  • Content Provider:为程序提供数据,通过Content Provider你的程序可以与别的程序共享数据。Android的SQLite数据库可以看做一个Content Provider。
  • Intents:是一个异步的消息系统,可以从别的系统或服务获取数据。程序可以直接调用一个服务或者activity,也可以请求android系统。
  • Broadcast Receiver:接受系统消息或者隐含的intent,可以根据系统的改变做出反应。一个程序可以注册成为某些事件的Broadcast Receiver,当事件发生时,程序就执行。

  安全和许可

  Android对一些任务有特别的许可。例如一个程序需要使用Internet,那么就需要在他的配置文件中获取相应的许可。在安装过程中,用户可以确认这个程序是否取得相应的许可。

  AndroidManifest.xml

  每一个Android程序都通过AndroidMainfest.xml来描述。这个文件中必须声明所有的activity、services、broadcast receiver、以及Content provider。也需要包含程序需要的许可。例如,如果程序需要访问网络,就必须声明。“AndrManifest.xml”可以认为是Android程序的部署声明。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rockux"
android:versionCode=""
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Convert"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
<uses-sdk android:minSdkVersion="" />
</manifest>

  package属性定义基础库。他必须是唯一的。所以比较好的处理办法就是使用你自己的域名的倒序,防止冲突。

  “android:versionName” 和”android:versionCode”用来表明你的程序的版本。versionName可以是任意的字符串用来给用户看的,versionCode必须是整数,这是菜市场用来判断你的程序是否更新的一个标志。通常从1开始,然后发布一个新版本就+1。

  “activity”定义了这个类下面的动作。

  “uses-sdk”属性用来确定你的程序需要的SDK的最低版本,防止你的程序被安装在不被支持的SDK上。

  R.java Resources 以及Assets

  Android项目中的gen目录包含一些生成的文件。生成的“R.java”包含了项目中的res文件中的资源文件。这些资源部署在res文件夹的可以是菜单、布局图标、图片、动画等等。例如,一个资源文件可以是一个图片或者一些包含了某些字符串的XML文件。

  如果你创建了一个新的资源,那么他就自动创建在R.java中。他的引用是一个整型值,Android系统有一些方法可以访问到这个资源。比如可以通过getString(R.string.yourString)来访问你的字符资源的引用,但是最好不要去改动R.java。

  assets中可以存放任何类型的数据,在java中你可以通过AssetsManager以及getAssets()方法来访问。

  动作(activities)和布局(layout)

  动作的用户界面通过布局来确定。layout是android.view.ViewGroups的一个实例。layout定义了UI元素,他们的属性以及摆放位置。UI元素基于android.view.View。

  布局可以通过java代码或者xml文件来定义。在你不知道内容的时候可以使用java代码布局,比如你的内容是从网上获取到的数据。

  基于XML的布局定义在/res/layout中。这些文件描述了视图组、视图、以及他们的关系和具体的属性。如果一个UI元素需要通过java代码访问,那么你就需要通过android.id来赋予这个元素一个唯一的id。

  通过XML定义布局是比较推荐的一种方式,可以将视图和程序的逻辑分离,比较好管理一些。

  动作(activities)和生命周期(lifecycle)

  操作系统控制着程序的生命周期。操作系统可以在任何时候中断程序,比如有来电了。Android对于动作有一些预先定义的关于生命周期的方法,比较重要的是:

  • onSaveInstanceState():如果动作停止就会调用。用来存储数据,好让重新启动的时候恢复到原来的状态。
  • onPause():在动作结束的时候触发,用来释放资源和存储数据。
  • onResume():在动作重启的时候触发,用来初始化程序

  上下文

  android.context.Context类提供了与系统通信的方法。他是程序的全局信息的一个接口。Contexts提供了getSystemService方法可以用来接收不同硬件的消息。作为动作和服务,你可以直接通过this来访问。

  转载请注明:
  作者:RockUX–WEB前端
  出自:【Android开发教程】一、基础概念

Android系统开发入门的更多相关文章

  1. 一看就懂的Android APP开发入门教程

    一看就懂的Android APP开发入门教程 作者: 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤 ...

  2. Android Wear 开发入门

    大家好,我是陆嘉杰,我是一名Android开发者.我想和大家进行一些技术交流,希望越来越多的人能和我成为好朋友. 大家都知道,智能手表是下一个开发的风口,而这方面的技术又属于前沿,所以和大家分享下An ...

  3. Android系统编程入门系列之加载界面Activity

    上回说到应用初始化加载及其生命周期,在Android系统调用Applicaiton.onCreate()之后,继续创建并加载清单文件中注册的首个界面即主Activity,也可称之为入口界面.主Acti ...

  4. 《Android系统开发》笔记

    <Android系统开发>笔记1:Android系统概述 Android四层架构: 1. Linux Kernel&driver层 a.依赖于Linux 2.6内核,包含安全性.内 ...

  5. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  6. Python云端系统开发入门——框架基础

    Django框架基础 这是我学习北京理工大学嵩天老师的<Python云端系统开发入门>课程的笔记,在此我特别感谢老师的精彩讲解和对我的引导. 1.Django简介与安装 Django是一个 ...

  7. Android系统开发--灯光系统之电池灯的流程分析

    Android系统开发--Android灯光系统之电池灯的流程分析 前期系统准备 运行初始化,创建系统服务 创建电池服务,获得电池灯;创建监听者监听上报电池事件: mSystemServiceMana ...

  8. Android系统开发实务实训

    实训项目 :               Android系统开发实务实训                           项目成品名称:         绝地坦克                 ...

  9. Android系统开发 编译系统签名的APP

    前言 一般情况下,我们使用的签名都是自己生成的Java签名来编译APP. 但是,如果需要开发一些特定设备的APP(对权限有更高的要求,需求一些系统基本的权限,比如让APP可以控制设备的休眠),那就需要 ...

随机推荐

  1. cf299C Weird Game

    Weird Game Yaroslav, Andrey and Roman can play cubes for hours and hours. But the game is for three, ...

  2. Linux服务器性能分汇总

    工具使用: vmstat 查看cpu时间.内存.IO的情况. 参考:http://linuxcommand.org/man_pages/vmstat8.html 基本用法: [root@root ~] ...

  3. 16.1114 模拟考试T1

    1.正确答案 [题目描述] 小H与小Y刚刚参加完UOIP外卡组的初赛,就迫不及待的跑出考场对答案. “吔,我的答案和你都不一样!”,小Y说道,”我们去找神犇们问答案吧”. 外卡组试卷中共有m道判断题, ...

  4. [C/C++] 结构体内存对齐用法

    一.为什么要内存对齐 经过内存对齐之后,CPU的内存访问速度大大提升; 内存空间按照byte划分,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内 ...

  5. php生成压缩包

    $filename = "./" . date ( 'YmdH' ) . ".zip"; // 最终生成的文件名(含路径) // 生成文件 $zip = new ...

  6. laravel的视图

    //输出视图 //建立控制器方法public function hello_test(){ return view('member/hello_test',['name'=>'张三','age' ...

  7. Java代码规范和质量检查插件-Checkstyle(官方资源)

    其实Checkstyle是一个JAR包,然后第三方开发者开发了Eclipse/IDEA的插件. 官网: https://github.com/checkstyle/checkstyle Eclipse ...

  8. Java屏幕截图工具 捕获屏幕

    原文:http://www.open-open.com/code/view/1420037709781 import java.awt.BorderLayout; import java.awt.Co ...

  9. 实现uitable cell中点击button设置当前cell为选中状态

    - (void)buttonClick:(id)senser{    NSInteger tag = [senser tag];    NSLog(@"the button tag is % ...

  10. 【docker】启动docker连接数据库 出现FATAL: password authentucation failed for user "homestatead"问题

    docker可以成功启动,启动命令如下: docker run -d -p : -v `pwd`/pgdata:/var/lib/postgresql/data -e POSTGRES_USER=ho ...