Android程序设计基础

Java开发环境的配置步骤:

 

1、下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、下载后JDK的安装根据提示进行,还有安装JDK的时候也会安装JRE,可以不用安装JRE。安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为:Java\jdk1.8.0_91

3、安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置

4、选择"高级"选项卡,点击"环境变量

5、在"系统变量"中设置2项属性,JAVA_HOME,PATH,,若已存在则点击"编辑",不存在则点击"新建"

变量设置参数如下:

变量名:JAVA_HOME   变量值:C:\Program Files(x86)\Java\jdk1.8.0_91     // 要根据自己的实际路径配置
变量名:Path变量值:%JAVA_HOME%\bin;

6、测试:

1"开始"->"运行",键入"cmd"

2)键入命令: java-versionjavajavac 几个命令,出现以下信息,说明环境变量配置成功;

 

为什么Android系统要比ios卡:

 

1. 后台服务及自动醒
这是最最最主要的原因. AndroidiOS在后台服务策略之间的区别极大的影响了系统的表现。
2.硬件的参数,品控与损耗
Android手机型号丰富,硬件水准也参差不齐。加上因为成本问题,低中端产品的硬件质量也很难得到保证。并且,因为Android系统后台进程多,发热量大加上系统优化不完善,因此,硬件的损坏速度也大大高于iphone  
3.开发语言的确有影响, 但是大多数用户操作不是计算密集型的, 影响不大。
4.显示系统设计能力

Android直到4.1才有了ProjectButter, 为什么不早点搞呢? 毕竟Google相对Apple还是一个年轻的公司, 而显示系统又是一个极其复杂和需要经验的领域. Apple是这个领域的奠基者和领军者, 自然有先天的优势。

 

Android SDK由几层基础架构所组成各层的和功能组成是什么

 

Android SDK4层基础架构组成从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层
Linux Kernel
Android
基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAPServiceAccess Point),专业点可以说是高内聚、低耦合。
如果你只是做应用开发,就不需要深入了解Linux Kernel层。

2.2AndroidRuntime

Android
包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dexdex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以將 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有時必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。
Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。

2.3Libraries

Android
包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(applicationframework)暴露给开发者。下面列出一些核心库:
系统C——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备 
媒体库——基于PacketVideoOpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4 H.264 MP3 AAC AMRJPG PNG 
界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 
LibWebCore——新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 
SGL——基本的2D图形引擎 
3D——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅 
FreeType ——位图和矢量字体渲染 
SQLite ——所有应用程序都可以使用的强大而轻量级的关系数据库引擎


2.4ApplicationFramework

通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。
开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。
所有的应用程序其实是一组服务和系统,包括:
视图(View——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 
内容提供者(ContentProviders——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 
资源管理器(ResourceManager——提供访问非代码资源,如本地化字符串、图形和布局文件 
通知管理器(NotificationManager——使所有的应用程序能够在状态栏显示自定义警告 
活动管理器(ActivityManager——管理应用程序生命周期,提供通用的导航回退功能 

2.5Applications


Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发!

 

Android四大组件是什么,分别简要说明功能。

 

1activity
1)一个Activity通常就是一个单独的屏幕(窗口)。
2Activity之间通过Intent进行通信。
3android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity


2service

1service用于在后台完成用户指定的操作。service分为两种:
astarted(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。
bbound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。
(2)startService()bindService()区别:
(a)started service(启动服务)是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。因此,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。
(b)使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有不求同时生,必须同时死的特点。
(3)开发人员需要在应用程序配置文件中声明全部的service,使用<service></service>标签。
(4)Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

3contentprovider
1android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
3ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
4)开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
5ContentProvider使用URI来唯一标识其数据集,这里的URIcontent://作为前缀,表示该数据由ContentProvider来管理。

4broadcastreceiver
1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activityserice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
2)广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。
3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值