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 文件定义的内容   --><TextViewandroid: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资源。
@后使用“+”表示定义一个新资源。

<TextViewandroid: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。

<TextViewandroid: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获得用户注意的首选方式。
例如:当设备收到文本信息或外部来电时,它通过闪光,发声,显示图标或显示对话框信息来提醒你。

转载于:https://www.cnblogs.com/liuhongfeng/p/5093396.html

Android开发之 Android 的基本组件的概述相关推荐

  1. Android开发之Android性能优化记录

    Android 性能优化 Android 中的性能优化在我看来分为以下几个方面:内存优化.布局优化.网络优化.安装包优化: 内存优化: 下一个问题就是: 布局优化: 布局优化的本质就是减少 View ...

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

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

  3. Android开发之android与JS互调 | Android与H5互调(附源码)

    我们先看下JS代码: <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  4. Android开发之UI库及组件资源

    本文介绍Android平台中一些免费的UI库及组件资源. 短短数年时间 Android 平台就已经形成了一个庞大而活跃的开发者社区.许多社区开发的项目业已进入成熟阶段,甚至可以用于商业的软件生产中,且 ...

  5. Android开发之Android Studio 3.6新特性之获取控件id的高级方式ViewBinding

    一般获取id有如下几种方式: 访问布局控件ID方式 优点 缺点 findViewById 系统提供有保障 特别繁琐代码量大 第三方注解 快捷简单 引用三方可能有不确定因素 kotlinx.androi ...

  6. Android开发之Android WIFI ADB(ADB WIFI)无线调试的技巧

    老套路线上效果图 以前又adb wifi可以使用,不过那是17年我用的AS2.3版本,并且除了adb wifi这个插件外还得手机安装一个app才可以,特别麻烦. 显示有心插件了->Android ...

  7. Android开发之android studio快捷键大全

    AndroidStudio 快捷键大全 编辑相关快捷键 Ctrl+Space 补全代码 ctrl+shift+space 智能代码补全 Ctrl + Shift + Insert 可以选择剪贴板内容并 ...

  8. Android开发之Android Studio第三方库的六种依赖讲解说明

    在Android Studio中有六种依赖 Compile,Provided,APK,Test compile,Debug compile,Release compile 1.Compile 是对所有 ...

  9. android开发之android:padding和android:margin的区别

    android:layout_margin:指该控件距离父控件的边距, android:padding: 指该控件内部内容,如文本距离该控件的边距.

最新文章

  1. 常用MySQL的命令集锦
  2. 中关村开源创新大赛-达闼赛道如火如荼进行中
  3. bootloader烧写
  4. VS 断点无法调试学习总结
  5. 云服务器怎么选系统,云服务器怎么选择操作系统
  6. navicat怎么导出mysql_navicat怎么把数据库导出
  7. excel 2007 vba与宏完全剖析_Excel宏VBA小技巧系列 | 分段加合
  8. 【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - 实战 - 后台 - 数据库的访问 - 01 - 通过wx.request或者qcloud.request来获取数据库数据
  9. 更轻松的获取APK文件安装时间
  10. python信息安全工具之端口扫描器
  11. 员工管理能力怎么提高?不妨使用现代工时表软件
  12. linux 下载hbase源码,linux上安装hbase(示例代码)
  13. 树莓派如何接硬盘_树莓派之挂载移动硬盘
  14. 可以手机安装电脑版chrome插件的安卓浏览器
  15. 京沪高铁全程提供WiFi无线网络技术揭密
  16. 在JS中如何获取时间以及转换时间
  17. 5G技术的原理(转)
  18. 【软件测试】软考-2022软件评测师考试心得
  19. 唯一约束和主键约束的区别
  20. Oracle官网账号

热门文章

  1. Windows系统cmd常用命令详解
  2. 270 扩展固态硬盘_新款macbook扩展坞,内置固态硬盘盒,支持NVME M2协议,一秒传输1GB...
  3. Hadoop学习笔记(一):零Linux基础安装hadoop过程笔记
  4. 关于高效、高质和高产
  5. 【CodeForces】947 D. Picking Strings
  6. 训练第一个机器学习模型
  7. 互联网项目管理流程(SOP)总结
  8. WPF视频会议系统资料
  9. 双缓冲(Double Buffer)原理和使用【转】
  10. 问题 F: 成绩统计