﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-胖熊熊-随笔分类-Android</title><link>http://www.blogjava.net/fatbear/category/48182.html</link><description>得到多少又失去了什么 </description><language>zh-cn</language><lastBuildDate>Sun, 03 Apr 2011 09:53:46 GMT</lastBuildDate><pubDate>Sun, 03 Apr 2011 09:53:46 GMT</pubDate><ttl>60</ttl><item><title>Android学习 (二) 应用程序结构</title><link>http://www.blogjava.net/fatbear/archive/2011/04/02/347540.html</link><dc:creator>fatbear</dc:creator><author>fatbear</author><pubDate>Sat, 02 Apr 2011 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/fatbear/archive/2011/04/02/347540.html</guid><wfw:comment>http://www.blogjava.net/fatbear/comments/347540.html</wfw:comment><comments>http://www.blogjava.net/fatbear/archive/2011/04/02/347540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fatbear/comments/commentRss/347540.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fatbear/services/trackbacks/347540.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;注：以下内容转自网络<br />
<br />
<p>在一个Android 应用中有如下的四种组件：<br />
* Activity 活动组件<br />
* Intent Receiver 接受处理组件<br />
* Service 服务组件<br />
* Content Provider 内容提供组件<br />
一个Android 应用并不需要同时具有这四个组件，应用可以组合这些组件。</p>
<p>在应用中一旦决定使用了哪些组件，就需要在AndroidManifest.xml文件中列举出来。<br />
</p>
<p><strong>Activity</strong><br />
Activities是最普遍的组件，在应用中通常用于显示一个屏幕（页面）的内容，仅仅一个屏幕（页面）的内容。开发人员需要从Activity基 类继承下来，管理UI显示和UI的反馈事件。大多数应用程序都会有多个屏幕（页面）的内容，如一个文本消息的应用程序，第一个页面要显示联系人列表，第二 个页面要写东西给选定的联系人，其他页面显示旧的文本内容或者其他等等。每一个页面都被当做一个Activity（活动组件），移动到其他页面意味着开始 了一个新的Activity（活动组件）。在某些场景下，一个Activity可以返回值给前一个Activity，如一个页面选择了一张图片，可以返回 这张图片给调用者（Activit）。</p>
<p>打开新的页面时，前一个页面将会暂停，放置到一个历史堆栈中，用户可以使用后退键浏览前面的页面，页面也可以从堆栈中删除。Android会为每一个从主页面home screen（idle界面？）启动的应用维护一个历史堆栈列表。</p>
<p><strong>Intent and Intent Filters<br />
</strong>Android使用一个叫Intent的类从一个页面移动到另外一个页面。一个Intent描述了应用将要做的事情，就是一种动作行为。最重要的有两点： 动作的类型和动作所捎带的参数（数据），典型的动作类型为MAIN（activity的正门），VIEW, PICK, EDIT等等。参数数据以URI形式来表示。例如，为了查看一个人的联系信息，需要创建一个Intent，动作类型为VIEW，人名为参数数据（需要格式 化为URI）。</p>
<p>一个Activity为了表明能够处理某些Intent，Android设计了一个相关的类IntentFilter，Activity在 IntentFilter中决定它能够处理的Intent动作类型，IntentFilter需要在AndroidManifest.xml文件中进行声 明。</p>
<p>从一个页面到另外一个页面跳转的依据在于发出的Intent，为了向前浏览，Activity调用startActivity(myIntent). Android系统在所有安装的应用程序中查找intent filters，找出最能够匹配myIntent的Activity。新的activity将被启动，intent被传入。有如下两个关键点：<br />
* Activities 能够重新被使用<br />
* Activities 在任何时候都可以被替换，只要一个Activity设置了相同的IntentFilter</p>
<p><strong>Intent Receiver</strong><br />
在应用程序中，针对外部事件需要执行一些动作来反馈，可以使用IntentReceiver类。例如：来了一个电话，或者数据通道可用，或者晚上到了。 Intent Receiver没有UI的显示，尽管可以通过NotificationManager 通知用户某些有趣的事情发生了。Intent Receivers也需要在AndroidManifest.xml中进行声明，当然也可以在程序中调用 Context.registerReceiver()接口动态声明。同时在应用程序没有跑起来的时候也能够调用Intent Receivers，当一个Intent Receivers被触发时，Android系统将会启动这个应用程序。应用程序也能够通过Context.broadcastIntent()广播他们 的Intent。</p>
<p><strong>Service</strong><br />
一个Service是没有UI，一直运行在后台的代码组件。一个好的例子：播放器从一个播放列表中播放歌曲。在一个播放器应用中，大概会有一个或多个 Activity组件允许用户选择歌曲和播放它们，歌曲播放代码不应该放在Activity组件中，因为我们希望一直能够听歌，甚至切换到了其他页面。所 以，播放器页面应该启动一个服务组件（Context.startService()）来播放歌曲。Android系统将会保持service运行直到它 结束（可以参考&#8220;Android 应用的生命周期&#8221;一文）。可以使用Context.bindService()接口连接上一个服务（如果这时候服务没有启动，连接会导致服务启动），连接 上之后，就可以和服务进行通讯。像播放器的例子，可以允许暂停，重绕等等。</p>
<p><strong>Content Provider</strong><br />
应用程序可以在文件中，数据库或者其他设备存储他们的数据。Content Provider用于将各个应用程序的数据进行共享，Content Provider是一个类，执行一套标准的方法，让其他的应用程序存储和获取Content Provider所处理的数据<br />
<br />
</p>
<p>转载自：http://blog.csdn.net/lixinye0123/archive/2008/04/16/2296916.aspx</p>
<img src ="http://www.blogjava.net/fatbear/aggbug/347540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fatbear/" target="_blank">fatbear</a> 2011-04-02 15:58 <a href="http://www.blogjava.net/fatbear/archive/2011/04/02/347540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android学习 (一) 系统架构</title><link>http://www.blogjava.net/fatbear/archive/2011/04/02/347529.html</link><dc:creator>fatbear</dc:creator><author>fatbear</author><pubDate>Sat, 02 Apr 2011 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/fatbear/archive/2011/04/02/347529.html</guid><wfw:comment>http://www.blogjava.net/fatbear/comments/347529.html</wfw:comment><comments>http://www.blogjava.net/fatbear/archive/2011/04/02/347529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fatbear/comments/commentRss/347529.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fatbear/services/trackbacks/347529.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 注：&nbsp;以下内容为网络上查询与整理<br />
<br />
Android的系统架构和其操作系统一样，采用了分层的架构。从架构图看，android分为四个层，从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层<br />
<div align="center"><img height="480" alt="" src="http://www.blogjava.net/images/blogjava_net/fatbear/2010123010192073.jpg" width="589" border="0" /></div>
<p><br />
1、Application就是在framework的基础上开发的各种应用。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 包括email客户端，SMS短消息程序，日历，地图，浏览器，联系人管理程序等。所有的应用程序都是使用JAVA语言编写的<br />
<br />
2、Application Framework(应用程序框架)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Framework是android为应用开发者设计的一套软件框架，提供了丰富的api和一些现成的开发元素。Framework是采用java语言实现的。在NDK出来之前，android应用开发者基本上只能用java来开发应用。<br />
Android使用JNI连接了libraries和framework。<br />
在每个应用后面的是一系列的服务和系统, 其中包括;<br />
　　* 丰富而又可扩展的视图(Views)，可以用来构建应用程序， 它包括列表(lists)，网格(grids)，文本框(text boxes)，按钮(buttons)， 甚至可嵌入的web浏览器。<br />
　　* 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库)， 或者共享它们自己的数据<br />
　　* 资源管理器(Resource Manager)提供 非代码资源的访问，如本地字符串，图形，和布局文件( layout files )。<br />
　　* 通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。<br />
　　* 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能<br />
3、Libraries(系统运行库)<br />
&nbsp;&nbsp;&nbsp;&nbsp;包含了核心库、第三方库和android虚拟机。android并没有直接采用传统的j2se或j2me的java虚拟机，而是自己建立了一个称为dalvik的虚拟机，号称更节省字节码的空间，性能更好。</p>
<p>1)程序库<br />
　　Android 包含一些C/C++库，这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库：<br />
　　* 系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc )， 它是专门为基于 embedded linux 的设备定制的。<br />
　　* 媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制，同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。<br />
　　* Surface Manager - 对显示子系统的管理，并且为多个应用程序提 供了2D和3D图层的无缝融合。<br />
　　* LibWebCore - 一个最新的web浏览器引擎用，支持Android浏览器和一个可嵌入的web视图。<br />
　　* SGL - 底层的2D图形引擎<br />
　　* 3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。<br />
　　* FreeType -位图(bitmap)和矢量(vector)字体显示。<br />
　　* SQLite - 一个对于所有应用程序可用，功能强劲的轻型关系型数据库引擎。<br />
2)Android 运行库<br />
　　Android 包括了一个核心库，该核心库提供了JAVA编程语言核心库的大多数功能。<br />
　　每一个Android应用程序都在它自己的进程中运行，都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件，该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的，所有的类都经由JAVA编译器编译，然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。<br />
　　Dalvik虚拟机依赖于linux内核的一些功能，比如线程机制和底层内存管理机制</p>
<p>4.、Linux Kernel(Linux 内核)<br />
&nbsp;&nbsp;&nbsp;&nbsp;Android 的核心系统服务依赖于 Linux 2.6 内核，如安全性，内存管理，进程管理， 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层</p>
 <img src ="http://www.blogjava.net/fatbear/aggbug/347529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fatbear/" target="_blank">fatbear</a> 2011-04-02 15:07 <a href="http://www.blogjava.net/fatbear/archive/2011/04/02/347529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android学习 开篇</title><link>http://www.blogjava.net/fatbear/archive/2011/03/29/347212.html</link><dc:creator>fatbear</dc:creator><author>fatbear</author><pubDate>Tue, 29 Mar 2011 06:55:00 GMT</pubDate><guid>http://www.blogjava.net/fatbear/archive/2011/03/29/347212.html</guid><wfw:comment>http://www.blogjava.net/fatbear/comments/347212.html</wfw:comment><comments>http://www.blogjava.net/fatbear/archive/2011/03/29/347212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fatbear/comments/commentRss/347212.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fatbear/services/trackbacks/347212.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这一两年不停的做项目，很多东西都没有及时记录下来，特写此文，警示自己。<br />
<br />
&nbsp;&nbsp; 关于&nbsp;android系统的介绍，google 下可以找到很多解释，这里不做解释<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 选择android开发的原因如下：<br />
&nbsp;&nbsp; 1.Android选择Java作为开发语言<br />
&nbsp;&nbsp; 2.优秀的设计理念<br />
&nbsp;&nbsp; 3.丰富的终端优势
<img src ="http://www.blogjava.net/fatbear/aggbug/347212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fatbear/" target="_blank">fatbear</a> 2011-03-29 14:55 <a href="http://www.blogjava.net/fatbear/archive/2011/03/29/347212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>