- 浏览: 675429 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
Android学习03-----Android应用的基本组件介绍
- 博客分类:
- Android
Android 应用通常由一个或多个组件组成,而最常用的组件是Activity ,另外还包括Service 、BroadcastReceiver 、ContentProvider 、Intent 。这里我想先简单说说这几个组件让自己有个大致的认识,在后面的博客中再作详细的梳理。
Activity 和View :
Activity 是Android 应用中负责与用户交互的组件,如果大家学过Swing 可以和JFrame 比较,JFrame 本身可以设置布局管理器,不断地想JFrame 中添加组件,但Activity 只能通过setContentView(View) 来显示指定组件。
View 组件是所有UI 控件、容器控件的基类,View 组件就是Android 应用中用户可以看到的部分。但View 最贱需要放到容器组件中或者使用Activity 将它显示出来。如果需要通过某个Activity 把指定View 显示出来,调用Activity 的setContentView() 方法即可。
setContentView 可以接受一个View 对象作为参数:
//创建一个线性布局管理器, LinearLayout是ViewGroup的子类,ViewGroup又是View的子类 LinearLayout layout = new LinearLayout(this); //设置该Activity显示layout Super.setContentView(layout);
setContentView 可以接受一个布局管理资源的ID 作为参数:
//设置该Activity显示main.xml文件定义的View setContentView(R.layout.main);
Activity 为Android 应用提供了可视化用户界面,可以理解成一个基本的组成单元,如果该Android 应用需要多个用户界面,那么这个Activity 应用将会包含多个Activity ,通过这些程序可以完成一个个的界面显示及事件处理,多个Activity 组成Activity 栈,当前活动的Activity 位于栈顶。
Activity 包含一个setTheme(int resid) 方法来设置其窗口的风格,如果我们希望窗口不显示标题、以对话框形式显示窗口,都可以通过该方法来实现。
Service :
Service 与Activity 的地位是并列的,它也代表一个单独的Android 组件。Service 与Activity 的区别在于Service 通常位于后台运行,它一般不需要与用户交互,因此Service 组件没有图形用界面。
与Activity 组件需要继承Activity 基类相似,Service 组件需要继承Service 基类。一个Service 组件被运行起来之后,它将拥有自己独立的生命周期,Service 组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。
BroadcastReceiver :
BroadcastReceiver 代表广播消息接收器。如果我们从代码实现角度来看,BroadcastReceiver 非常类似于事件编程中的监听器,与普通事件监听器不同的是:普通事件监听器监听的事件源是程序中的对象,而BroadcastReceiver 监听的事件源是Android 应用中的其他组件。
使用BroadcastReceiver 组件只要实现自己的BroadcastReceiver 子类,并重写onReceive(Context context,Intent intent) 方法即可。当其他组件通过sendBroadcast() 、sendStickyBroadcast() 或sendOrderedBroadcast() 方法发送广播消息时,如该BroadcastReceiver 也对该消息“感兴趣”(通过IntentFilter 配置),BroadcastReceiver 的onReceive(Context context,Intent intent) 方法将会被触发。
我们是实现了自己的BroadcastReceiver 之后,通常有两种方式来注册这个系统级的“事件监听器”:
1、 在Java 代码中通过Context.registReceiver() 方法注册BroadcastReceiver ;
2、 在AndroidManifest.xml 文件中使用<receiver> 元素完成注册;
ContentProvider :
我们知道,对于Android 应用而言,它们必须相互独立,各自运行在自己的Dalvik 虚拟机实例中,如果这些Android 应用之间需要实现实时的数据交换。例如我们开发了一个发送短信的程序,当发送短信时需要从联系人管理应用中读取指定联系人的数据,这就需要多个应用程序之间进行实时的数据交换。
Android 系统为这种跨应用的数据交换提供了一个标准:ContentProvider 。当用户实现自己的ContentProvider 时,需要实现如下几个抽象方法:
1、insert(Uri,ContentValues) :向ContentProvider 插入数据
2、delete(Uri,ContentValues) :删除ContentProvider 中指定数据
3、update(Uri,ContentValues,String,String[]) :更新ContentProvider 中指定数据
4、query(Uri,Stirng[],String,String[],String) :从ContentProvider 查询数据。
通常与ContentProvider 结合使用的是ContentResolver ,一个应用程序使用ContentProvider 暴露自己的数据,而另一个应用程序通过ContentResolver 来访问数据。
Intent 和IntentFilter :
严格来说,Intent 并不是Android 应用的组件,但是它对于Android 应用的作用非常之大,它是Android 应用内不同组件之间通信的载体。当Android 运行时需要连接不同的组件时,这时就需要Intent 了。Intent 可以启动应用中另一个Activity ,也可以启动一个Service 组件,还可以发送一条广播消息来触发系统中的BroadcastReceiver ,即Activity 、Service 、BroadcastReceiver 三种组件之间的通信都以Intent 作为载体,只是不同组件使用Intent 的机制略有区别而已。
1 、当需要启动一个Activity 时,可调用Context 的startActivity(Intent intent) 方法,该方法中的Intent 参数封装了需要启动的目标Activity 的信息;
2 、当需要启动一个Service 时,可调用Context 的startService(Intent intent) 方法或bindService(Intent service,ServiceConnection conn,int flags) 方法,这两个方法中的Intent 参数封装了需要启动的目标Service 信息;
3 、当需要触发一个BroadcastReceiver 时,可调用Context 的sendBroadcast(Intent intent) 、sendStickyBroadcast(Intent intent) 或sendOrderedBroadcast(Intent intent,String receiverPermission) 方法来发送广播消息,这三个方法中的Intent 参数封装了需要触发的目标BroadcastReceiver 的信息。
通过上面可以发现Intent 都是封装了需要启动或触发的目标组件的信息,所有很多资料上都将Intent 翻译为“意图”。
当一个组件通过Intent 表示了启动或触发另一个组件的“意图”后,这个意图可分为两类:
1、 显式Intent :显式Intent 明确指定需要启动或触发的组件的类名;
2、 隐式Intent :隐式Intent 只是指定需要启动或触发的组件应满足的条件;
对于显示Intent 而言,Andoid 系统无须对该Intent 做任何解析,系统直接找到指定的目标组件,启动或触发即可。
对于隐式Intent 而言,Android 系统需要对该Intent 进行解析,解析出它的条件,然后再去系统中查找与之匹配的目标组件,如果找到符合条件的组件,就启动或触发他们。
那么Android 系统如果判断被调用组件是否符合隐式Intent 呢?这就需要靠IntentFilter 来实现了,被调用组件可通过IntentFilter 来声明自己所满足的条件,也就是声明自己到底能处理哪些隐式Intent 。
OK ,以上主要是让自己对Android 的几个组件有个整体的认识和了解。
发表评论
-
This version of ADT requires android SDK
2013-07-25 16:45 1599Windows系统下用Eclipse开发工具开发An ... -
Android学习13-----网络通信(4) WebView组件
2012-11-27 09:18 2520WebView 是一个开发的浏览 ... -
Android学习13-----网络通信(3) 与Web Service进行通讯
2012-11-26 09:40 1898这里我们的WebService使用xFire开发。 ... -
Android学习13-----网络通信(2) 与Socket交换数据
2012-11-23 09:11 3311对于网络开发而言,最常用的交互模式:WebService、We ... -
Android学习13-----网络通信(1) 与WEB服务器交换数据
2012-11-22 09:11 2196与Web服务器交互: 如果手机要想与 web ... -
Android学习11-----多媒体技术(5) 媒体录制
2012-11-16 08:10 1896在Android中通过android.media ... -
Android学习11-----多媒体技术(4) 使用摄像头拍照,多点触控
2012-11-15 08:37 2892一、摄像头拍照 前面说媒体播放 时了解了 ... -
Android学习11-----多媒体技术(3) 媒体播放
2012-11-14 08:25 1417在 Androi ... -
Android学习11-----多媒体技术(2) Animation
2012-11-13 08:47 1998一、渐变动画, Tweened Animation ... -
Android学习11-----多媒体技术(1) 绘制简单图形,Bitmap,Matrix
2012-11-12 08:48 1627一、绘制简单图 ... -
Android学习12-----手机服务(4) 传感器
2012-11-19 09:13 2023传感器一般用于游戏中,在 Android 系统中为 ... -
Android学习12-----手机服务(1) 取得电池电量和声音服务:AudioManager
2012-11-18 11:18 3508一、取得电池电量信息 ... -
Android学习10-----Android组件通信 (8) 桌面显示组件:AppWidget
2012-11-02 08:36 2041一、 AppWidget 在使用 Androi ... -
Android学习10-----Android组件通信 (7) 广播机制:Broadcast
2012-11-01 08:43 1519一、 广播: 广播也是一种信息的发送机制,在 ... -
Android学习10-----Android组件通信 (6) PendingIntent
2012-10-31 08:20 2266Intent 的主要功能是表示用 ... -
Android学习10-----Android组件通信 (5) Service
2012-10-30 08:25 1740Service 基本组成: ... -
Android学习10-----Android组件通信 (4) 消息机制
2012-10-29 08:22 1555在 Android 操作系统中存在着消息队列的操作 ... -
Android学习10-----Android组件通信 (3) ActivityGroup
2012-10-26 08:23 2322导航栏在 Android 中的应用是很常见的,前面 ... -
Android学习10-----Android组件通信 (2) Activity生命周期
2012-10-25 08:16 1287Activity 是整个 Android 平台的基 ... -
Android学习10-----Android组件通信 (1) Intent
2012-10-24 08:43 2015在一个项目之中,会由多个 Activity ...
相关推荐
1. **向后兼容性**:支持库提供了许多API和组件,使得开发者可以在老版本Android设备上使用新特性,扩大了应用的覆盖范围。 2. **性能优化**:虽然引入了额外的库,但Google已经对这些库进行了优化,以确保在不影响...
同时,`appcompat-v7`库还包含了对`NavigationView`、`Snackbar`和`DialogFragment`等组件的支持,这些都是构建现代Android应用的重要部分。 在实际开发中,`appcompat-v7`库的使用方法通常是将其导入到项目中,...
Fragment是Android应用程序设计的一个关键组件,它允许你在单个Activity中创建多个独立的UI片段。Loader则是一种异步加载数据的机制,能够有效地处理数据加载与界面交互。IntentCompat则提供了对Intent的一些兼容性...
Fragment是Android应用中实现界面模块化的重要组件,Loader则帮助处理数据加载和刷新,Intent用于在组件间传递消息,ViewPager则用于实现滑动页面的效果。 `android-support-v7-appcompat.jar` 是Android AppCompat...
这两个库对于开发者来说具有重要意义,因为它们允许应用在旧版本的Android设备上运行,同时也提供了一些新的功能和组件。 `android-support-v4`库是Google为Android API级别4(即Android 1.6 Donut)及更高版本提供...
《Android SDK 平台详解——聚焦Android 33与ext5扩展》 Android SDK(Software Development Kit)是Android开发者必备的...通过深入学习和实践,开发者可以充分利用这些工具和更新,打造高质量的Android应用程序。
在Android开发中,`android-support-v7`库和`android-support-v7-recyclerview`库是两个非常关键的组件,它们极大地扩展了Android SDK...理解和熟练掌握这两个库的使用,对于提升Android应用的用户体验和性能至关重要。
下面我们将深入探讨`android-support-v4`库的基本概念、它提供的关键组件以及如何在项目中使用。 首先,`android-support-v4`库是Google为开发者提供的一系列回溯支持库之一,其目标是帮助开发者编写兼容多种...
Android Support Library v4是一个重要的组件,它为Android应用程序提供了向后兼容的功能。这个库使得开发者能够使用最新的API特性,即使目标设备运行的是早期版本的Android系统。`android-support-v4.jar`是这个库...
Android SDK(Software Development Kit)是Android系统开发的核心工具集,它包含了开发者构建、调试和发布Android应用所需的所有组件。在Android SDK中,"SDK Platforms"是至关重要的部分,它提供了Android操作系统...
在Android开发中,当应用程序的.dex文件数量超过65,536个方法限制时,就需要引入多 dex 支持来解决这个问题。Android Support Library 的 Multidex ...理解和正确使用这个库对于开发大型、复杂的Android应用至关重要。
Android Studio作为谷歌官方推荐的Android应用程序开发集成开发环境(IDE),一直以来都是开发者的重要工具。本篇文章将详细解析“android-studio-2021.3.1.17-windows.exe”这一版本的Android Studio,主要面向...
Android SDK 是 Android 应用开发的核心工具集,它包含了开发者构建、测试和部署 Android 应用所需的所有组件。"android-33" 指的是 Android SDK 的一个特定版本,代表了 Android 操作系统的第 33 版本。这个版本...
Preference类是用于创建设置界面的组件,`android-support-v4`库提供了PreferenceFragment,使得在旧版本的Android上也能创建可导航的设置页面,允许用户与应用的偏好设置进行交互。 **其他的兼容组件和服务** ...
标题中的"android-sdk-4.2.2 android-sdk-4.2.2-platforms"指的是Android SDK的一个特定版本,即Android 4.2.2(API级别17),该版本的SDK平台组件。这个版本是Android操作系统的 Jelly Bean 版本的一部分,发布于...
在Android开发中,支持库(Support Library)是Google提供的一系列API,用于向后兼容旧版本的Android系统,同时也引入了一些新的特性和组件。这里提到的`android-support-v4.jar`、`android-support-v13.jar`和`...
在Android开发中,`android-support-v7-appcompat.jar`和`android-support-v4.jar`是两个非常关键的库文件,它们提供了对早期Android版本的兼容性...理解和熟练运用这两个库,是提升Android应用质量和用户体验的关键。
在Android开发中,`android-support-v7-appcompat.jar` 和 `android-support-v4.jar` 是两个非常重要的库文件,它们提供了对旧版本Android系统的重要...理解并熟练运用这些组件,对于开发高质量的Android应用至关重要。
这个版本,即“android-studio-2021.2.1.15-windows”,是针对Windows操作系统的一个特定构建,提供了强大的功能和优化,使得开发者在Windows平台上能够更加高效地进行Android应用开发。 Android Studio 2021.2....
本文将深入探讨这个版本的SDK Build-tools及其在Android应用开发中的作用。 Android SDK Build-tools是一组用于构建Android应用的命令行工具,它们是Android Studio开发环境中的一部分,但也可以独立使用。这个工具...