`

Android学习03-----Android应用的基本组件介绍

阅读更多

 

Android 应用通常由一个或多个组件组成,而最常用的组件是Activity ,另外还包括ServiceBroadcastReceiverContentProviderIntent 。这里我想先简单说说这几个组件让自己有个大致的认识,在后面的博客中再作详细的梳理。

 

Activity View

Activity Android 应用中负责与用户交互的组件,如果大家学过Swing 可以和JFrame 比较,JFrame 本身可以设置布局管理器,不断地想JFrame 中添加组件,但Activity 只能通过setContentView(View) 来显示指定组件。

View 组件是所有UI 控件、容器控件的基类,View 组件就是Android 应用中用户可以看到的部分。但View 最贱需要放到容器组件中或者使用Activity 将它显示出来。如果需要通过某个Activity 把指定View 显示出来,调用ActivitysetContentView() 方法即可。

 

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 组件。ServiceActivity 的区别在于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 配置),BroadcastReceiveronReceive(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 ,即ActivityServiceBroadcastReceiver 三种组件之间的通信都以Intent 作为载体,只是不同组件使用Intent 的机制略有区别而已。

       1 、当需要启动一个Activity 时,可调用ContextstartActivity(Intent intent) 方法,该方法中的Intent 参数封装了需要启动的目标Activity 的信息;

       2 、当需要启动一个Service 时,可调用ContextstartService(Intent intent) 方法或bindService(Intent service,ServiceConnection conn,int flags) 方法,这两个方法中的Intent 参数封装了需要启动的目标Service 信息;

       3 、当需要触发一个BroadcastReceiver 时,可调用ContextsendBroadcast(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 的几个组件有个整体的认识和了解。  

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    android-support-v4 .jar,android-support-annotations.jar

    1. **向后兼容性**:支持库提供了许多API和组件,使得开发者可以在老版本Android设备上使用新特性,扩大了应用的覆盖范围。 2. **性能优化**:虽然引入了额外的库,但Google已经对这些库进行了优化,以确保在不影响...

    android-support-v7-appcompat

    同时,`appcompat-v7`库还包含了对`NavigationView`、`Snackbar`和`DialogFragment`等组件的支持,这些都是构建现代Android应用的重要部分。 在实际开发中,`appcompat-v7`库的使用方法通常是将其导入到项目中,...

    android-support-v4 android-support-v7-appcompat

    Fragment是Android应用程序设计的一个关键组件,它允许你在单个Activity中创建多个独立的UI片段。Loader则是一种异步加载数据的机制,能够有效地处理数据加载与界面交互。IntentCompat则提供了对Intent的一些兼容性...

    android-support-v4+android-support-v7-appcompat组合包

    Fragment是Android应用中实现界面模块化的重要组件,Loader则帮助处理数据加载和刷新,Intent用于在组件间传递消息,ViewPager则用于实现滑动页面的效果。 `android-support-v7-appcompat.jar` 是Android AppCompat...

    android-support-v4和android-support-v7

    这两个库对于开发者来说具有重要意义,因为它们允许应用在旧版本的Android设备上运行,同时也提供了一些新的功能和组件。 `android-support-v4`库是Google为Android API级别4(即Android 1.6 Donut)及更高版本提供...

    Android SDK (SDK Platforms)-android-33-ext5.zip

    《Android SDK 平台详解——聚焦Android 33与ext5扩展》 Android SDK(Software Development Kit)是Android开发者必备的...通过深入学习和实践,开发者可以充分利用这些工具和更新,打造高质量的Android应用程序。

    android-support-v4.jar最新版

    Android Support Library v4是一个重要的组件,它为Android应用程序提供了向后兼容的功能。这个库使得开发者能够使用最新的API特性,即使目标设备运行的是早期版本的Android系统。`android-support-v4.jar`是这个库...

    android-support-v7和android-support-v7-recyclerview的classes.jar

    在Android开发中,`android-support-v7`库和`android-support-v7-recyclerview`库是两个非常关键的组件,它们极大地扩展了Android SDK...理解和熟练掌握这两个库的使用,对于提升Android应用的用户体验和性能至关重要。

    android-support-v4 基本android7.0

    下面我们将深入探讨`android-support-v4`库的基本概念、它提供的关键组件以及如何在项目中使用。 首先,`android-support-v4`库是Google为开发者提供的一系列回溯支持库之一,其目标是帮助开发者编写兼容多种...

    Android SDK (SDK Platforms)-android-33-ext4.zip

    Android SDK(Software Development Kit)是Android系统开发的核心工具集,它包含了开发者构建、调试和发布Android应用所需的所有组件。在Android SDK中,"SDK Platforms"是至关重要的部分,它提供了Android操作系统...

    android支持包:android-support-v4

    Preference类是用于创建设置界面的组件,`android-support-v4`库提供了PreferenceFragment,使得在旧版本的Android上也能创建可导航的设置页面,允许用户与应用的偏好设置进行交互。 **其他的兼容组件和服务** ...

    android-support-multidex-instrumentation.jar.zip

    在Android开发中,当应用程序的.dex文件数量超过65,536个方法限制时,就需要引入多 dex 支持来解决这个问题。Android Support Library 的 Multidex ...理解和正确使用这个库对于开发大型、复杂的Android应用至关重要。

    android-studio-2021.2.1.15-windows

    这个版本,即“android-studio-2021.2.1.15-windows”,是针对Windows操作系统的一个特定构建,提供了强大的功能和优化,使得开发者在Windows平台上能够更加高效地进行Android应用开发。 Android Studio 2021.2....

    linux系统android-studio-ide-193.6514223安装文件

    Android Studio是Google官方推出的Android应用程序开发集成开发环境(IDE),版本号为193.6514223的安装文件对应于Android Studio 4.0。对于Linux用户来说,安装这一版本的Android Studio能够享受到与Windows和macOS...

    android-studio-2021.3.1.17-windows.exe

    Android Studio作为谷歌官方推荐的Android应用程序开发集成开发环境(IDE),一直以来都是开发者的重要工具。本篇文章将详细解析“android-studio-2021.3.1.17-windows.exe”这一版本的Android Studio,主要面向...

    android-sdk-4.2.2 android-sdk-4.2.2-platforms

    标题中的"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-v4.jar android-support-v13.jar android-support-v7-gridlayout.jar

    在Android开发中,支持库(Support Library)是Google提供的一系列API,用于向后兼容旧版本的Android系统,同时也引入了一些新的特性和组件。这里提到的`android-support-v4.jar`、`android-support-v13.jar`和`...

    android-support-v7-appcompat.jar和android-support-v4.jar包

    在Android开发中,`android-support-v7-appcompat.jar`和`android-support-v4.jar`是两个非常关键的库文件,它们提供了对早期Android版本的兼容性...理解和熟练运用这两个库,是提升Android应用质量和用户体验的关键。

    android-support-v7-appcompat.jar android-support-v4.jar

    在Android开发中,`android-support-v7-appcompat.jar` 和 `android-support-v4.jar` 是两个非常重要的库文件,它们提供了对旧版本Android系统的重要...理解并熟练运用这些组件,对于开发高质量的Android应用至关重要。

    android-sdk-macosx.zip

    Android SDK(Software Development Kit)是开发者进行Android应用程序开发不可或缺的工具集,它包含了编译、调试、模拟等所需的各种组件和库。在本篇文章中,我们将深入探讨“android-sdk-macosx.zip”这一针对...

Global site tag (gtag.js) - Google Analytics