Android是一个为组件化而搭建的平台,它的应用是由一些零散的有联系的组件组成,并通过AndroidManifest.xml文件 把它们绑定起来。

Android常用的组件有: Activity(活动)  , Service (服务),Broadcast Receiver(广播接收器) ,Intent (意图),Content Provide (内容提供器)和Notification(通知) 。

一、 Activity 

1. Activity 介绍

Activity是最常用的组件,实现应用程序的用户界面显示。

应用程序可以定义一个或多个Activity。

Activity的显示内容由View对象提供。

每个视图(视图组)对象都有它们自己的多种xml属性。

每个视图(视图组)对象都有一个ID属性。

2、Activity 实例

例:在HelloWorld 的activity_main.xml中的 TextView对象:

  <!-- 添加了一个textView 控件,其显示的内容是 string.xml 文件定义的内容   -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

3、ID定义的方式

ID属性有时被定义为字符串,编译后为整型值。可以查看R.java文件。

ID的定义:

方式一、 
Android:id=“@+id/my_button1”

“@”告诉xml解析器,解析并展开id后的其余部分作为ID资源。
@后使用“+”表示定义一个新资源。

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="34dp"
android:text="@+id/testword" />

方式二、

Android:id=“@android:id/my_button1”

@后不使用“+”表示引用Android的一个资源。
此时要加上Android包名字空间,通过它可以从android.R资源类中引用ID。

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

4. 启动Activity方式

在onCreate()方法内调用setContentView()方法,用来指定将要启动的res/layout目录下的布局文件,例如

第一种:setContentView(R.layout.main)。
第二种方法是调用startActivity(),用于启动一个新的Activity。
第三种方法是调用startActivityforResult(),用于启动一个Activity,并在该Activity结束时会返回信息。

5. 关闭Activity方式

通常调用finish()方法来关闭一个Activity。
调用setResult()方法,则可以返回数据给上一级的Activity。
使用startActivityforResult()启动的Activity时,则需要调用finishActivity()方法,来关闭其父Activity。

二 、Service

1. Service简介

没有用户界面显示。
具有较长的生命周期。
常用于播放背景音乐的应用设计。
一般由Activity启动,但不依赖于Activity 。

2. 启动(结束)方式

startService方法:启动,会依次调用onCreate和onStart方法;
stopService方法:结束,会调用onDestroy方法。

bindService方法:启动,会依次调用onCreate和onBind方法;
unbindService方法:结束,会依次调用onUnbind和onDestroy方法。

三、 BroadcastReceiver

1.作用:接收广播消息,并做相应处理。

2.使用过程:

将需要广播的消息封装到Intent中。

然后通三种发送方法中的一种将Intent广播出去 。
通过IntentFilter对象来过滤所发送的实体Intent。
实现一个重写了onReceive方法的BroadcastReceiver。

3.注册方式

在AndroidManifest.xml中,放在<receiver> </receiver>中,通过<intent-filter>设置过滤条件。
在java代码中,先创建IntentFilter对象,在IntentFilter对象内设置Intent过滤条件。

四、Intent

1. Intent简介

是一种运行时的绑定机制,运行时连接两个不同的组件。
Activity、Service、BroadcastReceiver之间的通信由Intent协助完成。
不同类型的组件有不同的 Intent传送方法。

2. Intent组成:组件名称, Action, Data,Category等。

3. Intent过滤器(IntentFilter )

当Intent没有指定组件名(隐性)时,使用IntentFilter 来找与Intent最合适的组件。
工作机制:通过Intent向Android发出请求,然后查询各组件声明的IntentFilter,找到需要的组件并运行它。
用<Intent-filter>标签声明指定组件支持的 Intent值。
IntentFilter可以设置多个过滤值(即元素值)。

五 、ContentProvider

实现应用程序之间数据共享的类。

ContentProvider为所有需要共享的数据创建一个数据表。

ContentProvider会对外提供一个公开的URI来标识数据集。

URI:通用资源标识符(Uniform Resource Identifier)

URI主要分三个部分:scheme, authority 和 path。其中authority又分为host和port。

六 、Notification

Notification用来在不需要焦点或不中断它们当前Activity的情况下提示用户。
它们是Service或Broadcast Receiver获得用户注意的首选方式。
例如:当设备收到文本信息或外部来电时,它通过闪光,发声,显示图标或显示对话框信息来提醒你。

Android开发之 Android 的基本组件的概述的更多相关文章

  1. Android开发之 Android应用程序详细解析

    我们继续的沿用上一篇所建立的应用. Android应用程序可以分为:应用程序源代码(.java),应用程序描述文件(.xml),各种资源. 可以这么理解: 安卓应用程序,通过java代码来实现其业务逻 ...

  2. Android开发之 Android应用程序目录结构解析

    建立的HelloWorld的应用项目,其代码是由ADT插件自动生成的,形成Android项目特有的结构框架. 接下来让我带领大家解析一个Android程序的各个组成部分,这次我们拿一个Hello,Wo ...

  3. Android开发之android:process=":remote"

    由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象.在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将 ...

  4. Android开发之Android Material Design Toolbar自定义随笔

    一.自定义Toolbar的menu: 在menu下新建menu.xml文件,自定义menu的样式: <menu xmlns:android="http://schemas.androi ...

  5. Android 开发之Android 应用程序如何调用支付宝接口

    1.到支付宝官网,下载支付宝集成开发包 由于android设备一般用的都是无线支付,所以我们申请的就是支付宝无线快捷支付接口.下面是申请的地址以及下载接口开发包的网址:https://b.alipay ...

  6. Android 开发之 Android 开发的起步

    前言  Android 开发的起步 我们可以先来看看百科上面怎么说? 百度百科上 Android的介绍 一.Windows环境下在线搭建Android环境. 1. 下载 Android开发工具. JD ...

  7. Android开发之Android Context,上下文(Activity Context, Application Context)

    转载:http://blog.csdn.net/lmj623565791/article/details/40481055 1.Context概念Context,相信不管是第一天开发Android,还 ...

  8. Android开发之 android:windowSoftInputMode属性详解

    android:windowSoftInputMode activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性. 这个属性能影响两件事情: [一] ...

  9. android开发之-Android 开发之4.0界面设计原则-整理

    设计原则: 一.让人着迷: 1.给人惊喜:使用漂亮的界面.精心的动画.适时的音乐. 2.真实的对象比按钮和菜单更有趣   这句话的意思是:使用描述描述性的图标作为快捷方式,界面美观   当然这个快捷方 ...

随机推荐

  1. mysql 线上not in查询中的一个坑

    今天早上开发又过来说,怎么有个语句一直没有查询出结果,数据是有的呀,并发来了如下的sql(为了方法说明,表名及查询均做了修改): select * from t2 where t2.course no ...

  2. 给你的博客加上“Fork me on Github”彩带

    起 如今,随着Git的大热以及Github的优越性,许多知名开源项目都将源代码托管到Github上了.在Github上不仅可以托管自己的开源项目,还可以Fork人家的源代码,给自己感兴趣的项目评价(s ...

  3. <!DOCTYPE> 的理解

    [[ from <!DOCTYPE> 标签的深入理解 ]] 前言: 今天被问道“有没有仔细了解过<!DOCTYPE>标签?”,愣了一下,因为一开始在W3cschool上看到过建 ...

  4. C#属性封装

    1.属性封装是为了保护与之相对应的字段的,保证字段的读取和赋值是否符合要求 2.属性可以分为:读写,只读,只写 3.允许外部访问的变量一定要申明为属性 4.属性的本质就是两个方法. 5.自动属性 6. ...

  5. 怎样计算一个整数的位数&并把每一位上的数字保存下来

    用循环来解决~~ M每次除以10, 再用一个变量count来计数,每循环一次 加1,直到这个数除去10后的数小于10 ,count再加1就可以了 实例:整数M=4325, 第一次:4325/10=43 ...

  6. 在SQL存储过程中给条件变量加上单引号

    在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) ), )), )+ ...

  7. 个人学习对UIView动画的总结

    我的博客之前已经开通五个月了,但是一直没有写东西.一是不敢写,二是也不知道写啥.毕竟是一个刚刚入行大半年的菜鸟,现在总想通过各种办法提高自己.之前总感觉用到一些东西,只是当时搞懂了一点,加上并没有总结 ...

  8. 重新想象 Windows 8 Store Apps (38) - 契约: Search Contract

    [源码下载] 重新想象 Windows 8 Store Apps (38) - 契约: Search Contract 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 ...

  9. C# ICSharpCode.SharpZipLib.dll文件压缩和解压功能类整理,上传文件或下载文件很常用

    工作中我们很多时候需要进行对文件进行压缩,比较通用的压缩的dll就是ICSharpCode.SharpZipLib.dll,废话不多了,网上也有很多的资料,我将其最常用的两个函数整理了一下,提供了一个 ...

  10. 【Effective Java】1、静态工厂的方式代替构造函数

    使用一个服提供者对进行服务的提供,服务的请求通过不同的提供者提供不同的服务,服务提供者首先必须在工厂中进行注册,然后才可以通过工厂实例化服务 Service.java package cn.xf.cp ...