android 4大组件详解

android 4大组件是android的灵魂,每一个APP的开发必然离不开它们。

现在总的说一说他们的功能和用法:

1、Activity

应用程序中Activity就是一个屏幕的界面,你的眼睛看到的就是一个Activity。

Activity的生命周期:这个是应用开发中比较重要的部分,了解activity在每个阶段的生命周期对我们的开发是至关重要的;

首先启动一个Activity1 onCreate->onStart->onResume

接着跳转到Activity2    Activity1的生命周期变化:onPause->onStop

Activity2的生命周期变化:onCreate->onStart->onResume

回到Activity1    Activity2的生命周期变化 :onPause->onStop->onDestory

Activity1的生命周期变化:onReStart->onStart->onResume

每次启动Activity时OnCreate只会调用一次

2、Service

Service是不可见的,运行在后台的,它是运行的主线程的,所以在Service执行时间比较长的任务时必须使用异步处理,不然会造成ANR。

Service的两种打开方式:

1.在配置文件里注册:

<service android:name="MyService1">

<intent-filter>

<action android:name="XXXXXXXX"/>

</intent-filter>

</service>

2.启动service

启动Service有两种启动方式:Context.StartService()    Context.bindService();

现在来说说这两种启动方式的区别:

(1)StartService 的启动的生命周期是 onCreate->onStart->onStartCommand

onCreate在Service启动时只会调用一次,以后每次启动同样的Service只会调用onStart,通过
StartServce启动的Service与调用者没有关系,调用者关闭了,还会在后台运行,只有当调用
ConText.StopService时才会停止销毁 onStop->onDestory

(2)bindService启动的生命周期是 onCreate->onBind

onCreate在Service启动时只会调用一次,以后每次启动同样的Sevice只会调用onBind,通过
bindSrivice启动的Service在调用者关闭时,service也会跟着关闭。

3、BroadcastReceive(广播接收者)

我对broadcasereceive的理解是broadcasereceive是接收外部消息事件,然后根据程序的逻辑进行一些处理,如:来电、开机、Notification等等。broadcasereceive也是不可见的,但是可以启动Activity和service.

监听broadcasereceive的步骤:

1.首先写个类继承BroadCastReceiver,并实现里面的onReceive方法,在这个方法里用来判断广播的类型,从而进行相应的操作

2.注册广播接收者

(1)通过配置文件注册:

	<receiver android:name=".MyReceiver" >
  		<intent-filter>
    			<action android:name="android.provider.Telephony.SMS_RECEIVED" />
  		</intent-filter>
	</receiver >

(2)在JAVA代码里注册:

	IntentFilter intentFilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
	registerReceiver(myReceiver ,intentFilter);

注意:

1.广播的生命周期一般只有10s左右,在广播里执行比较耗时的操作就会有可能造成ANR,如果需要完成一项比较耗时的工作 , 应该通过发送 Intent
给 Service, 由Service 来完成 . 这里不能使用子线程来解决 , 因为 broadcastReceiver 的生命周期很短 , 子线程可能还没有结束broadcastReceiver 就先结束,broadcastReceiver 一旦结束 , 此时 BroadcastReceiver 的所在进程很容易在系统需要内存时被优先杀死 , 因为它属于空进程 . 如果它的宿主进程被杀死 , 那么正在工作的子线程也会被杀死 . 所以采用子线程来解决是不可靠的

2.动态注册广播接收器还有一个特点,就是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用系统常见广播Intent,如开机启动、电池电量变化、时间改变等广播

4、Content Provider内容提供者

ContentProvider(内容提供者)是Android中的四大组件之一。主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。ContentProvider分为系统的和自定义的,系统的也就是例如联系人,图片等数据。

  1.android中对数据操作包含有:

  file, sqlite, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据,程序不能通过这三种方法去操作别的应用内的数据。android中提供ContectResolver与ContentProvider来操作别的应用程序的数据。

  2.使用方式:

  一个应用实现ContentProvider来提供内容给别的应用来操作,

  一个应用通过ContentResolver来操作别的应用数据,当然在自己的应用中也可以

时间: 2024-10-12 11:09:58

android 4大组件详解的相关文章

Android中Intent组件详解

Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作.与动作有关的数据等.Android则根据此Intent对象之叙述,负责配对,找出相配的组件,然后将 Intent对象传递给所找到的组件,Android的媒婆任务就完成了. 在Google Doc中是这样描述Intent的(摘自Android中文翻译组)当接收到ContentR

【转】 Android中Intent组件详解

原帖地址 http://blog.csdn.net/zuolongsnail/article/details/6574211 Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作.与动作有关的数据等.Android则根据此Intent对象之叙述,负责配对,找出相配的组件,然后将 Intent对象传递给所找到的组件,Android

Android 四大组件 详解

[置顶] Android四大组件详解 分类: Android四大组件2013-02-09 16:23 19411人阅读 评论(13) 收藏 举报 Android开发 注:本文主要来自网易的一个博主的文章,经过阅读,总结,故留下文章在此 Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity : 应用程序中,一个

Android组件系列----Activity组件详解

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3924567.html 联系方式:[email protected] [正文] 注:四大组件指的是应用组件:Activity.Service.BroadcastReceiver.ContentProvider:之前的控件指的是UI组件. 博文目录: 一.Activity简介 二.Activity的状

Android目录结构(详解)

Android目录结构(详解) 下面是HelloAndroid项目在eclipse中的目录层次结构: 由上图可以看出项目的根目录下共有九个文件(夹),下面就这九个文件(夹)进行详解: 1.1src文件夹和assets文件夹: 每个Android程序都包含资源目录(src)和资产目录(assets),资源和资产听起来感觉没有多大差别,但在存储外部内容时用资源(src)比较多,其中它们的区别在于存放在资源(src)下的内容可以通过应用程序的R类进行访问,而存放在资产(assets)下的内容会保持原始

Android开发之BroadcastReceiver详解

BroadcastReceiver,顾名思义就是"广播接收者"的意思,它是Android四大基本组件之一,这种组件本质上是一种全局的监听器,用于监听系统全局的广播消息.它可以接收来自系统和应用的的广播. 由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统不同组件之间的通信.比如Activity与通过startService()方法启动的Service之间通信,就可以借助于BroadcastReceiver来实现. BroadcastReceiver简

Android:ViewPager扩展详解——带有导航的ViewPagerIndicator(附带图片缓存,异步加载图片)

大家都用过viewpager了, github上有对viewpager进行扩展,导航风格更加丰富,这个开源项目是ViewPagerIndicator,很好用,但是例子比较简单,实际用起来要进行很多扩展,比如在fragment里进行图片缓存和图片异步加载. 下面是ViewPagerIndicator源码运行后的效果,大家也都看过了,我多此一举截几张图: 下载源码请点击这里 ===========================================华丽的分割线==============

给 Android 开发者的 RxJava 详解

作者:扔物线 前言 我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个月,我也发现国内越来越多的人开始提及 RxJava .有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava 到底是什么? 鉴于 RxJava 目前这种既火爆又神秘的现状,而我又在一年的使用

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba