Android四大组件

一.Android 四大组件之Activity

1.     Activity概念

Activity是Android的四大组件之一,对于用户而言Activity就是手机屏幕界面,我们可以和Activity交互,比如说打电话,看地图,浏览网页,发邮件等。对于开发人员来说Activity就是编程的入口,我们可以在Activity中加载布局,设置组件的监听事件以及相应监听。Activity之间通过Intent进行通信。

2.    生命周期

四种状态:

运行态:能看到界面,可以获得焦点

暂停态:能看到界面,不能获得焦点

停止态:看不到界面,不能获得焦点

销毁态:Activity被销毁

七种方法:onCreate(),onStart(),onResume(),onPause(),onStop(),onRestart(),

onDestroy().

不同情况的方法调用:

1)     点击图标时,执行onCreate(),onStart(),onResume()

2)     跳转Activity(完全覆盖),执行onPause(),onStop()

3)     半透明,执行onPause()(对话框形式显示时)

4)     返回按钮,执行onResume(),

5)     点击home,执行onPause(),onStop()

6)     再次点击图标,执行onRestart(),onStart(),onResume()

7)     点击返回,执行onPause(),onStop(),onDestroy()

8)     onSaveInstanceState(),onRestoreInstanceState()

手机横竖屏切换,调用的方法依次为:onCreate(),onStart(),onResume(),onSaveInstanceState(),

onPause(),onStop(),onDestroy(),onCreate(),onStart(),onResume(),

onRestoreInstanceState()

3.    Activity的四种启动模式

a)      标准模式:重新创建Activity,内存分布20M,如果不断创建的话,会引发OOM(内存溢出)

b)     Task顶单例模式(Single Top):当Activity在栈顶时,不会被创建,如果不在栈顶,情况则与标准模式相同。

c)      Task内单例模式(Single Task):栈顶不准有Activity,否则全部remove掉。

d)     全局模式(SingleInstance):重新创建一个栈来存储被创建的Activity。(比如浏览器,联系人,打电话)

 

二.Android 四大组件之Service

1.Service的概念

       Service是Android四大组件之一,和Activity以及BroadcastReceiver的等级一样,如果把Activity看成是运行在前端的组件,那么Service是运行在后台的,Service可以帮助我们做一些不需要页面的操作,比如项目中用到的网络数据的传输,音乐的播放,文件I/o操作等,当我们把当前的应用切换到其他应用之后,我们的Activity处于停止状态,服务还一直处于运行的状态。

2.Service的分类

区别:是否将Activity传给Activity

1)     本地服务

Activity                           Service

StartService()-------------------------onCreate()--------onStartCcommand()

StopService()-------------------------onDestroy()

  本地服务特点:使用简单,但是不能从Service中获取数据,本地服务的桥梁是Intent对象。

     当Activity消失时,Service还处于运行状态。

2)      绑定服务

Activity                            Service

BindService(intent,sc,flags)-------------onCreate()----onBind()

unBindService(sc)-------------------------onunBind()-----onDestroy()

绑定服务特点:把具体的Activity组件和Service绑定在一起,当Acticity消失时,那么Service也消失。绑定服务的桥梁是ServiceConnection

两个方法:onServiceConnected()和onServiceDisConnected().

onServiceConnected()这个方法将会在Service的onBind()函数返回

Binder对象时调用,我们从这个函数中取得MyBinder对象,然后获得Service的值,更新刷新Activity的UI.

onServiceDisConnected()这个方法系统会调用。

 

三.Android 四大组件之ContentProvider

1.ContentProvider的概念

  ContentProvider解决进程之间数据共享的问题,把自己应用中的数据(数据库,本地文件)暴露给其他应用。

  URI:统一资源标识符,其中URL是URI中特殊的一种,代表网络请求地址。

 Uri的规范:content://com.baidumap/user(相当于请求的path)

 Url的规范:http://ip:端口号/项目名/资源名

UriMatcher:这个类是系统提供的帮助类,主要用来匹配Uri的。

UriMatcher urimatcher=new UriMatcher(-1);

Urimatcher.addUri(String authority,String path,int code);

Urimatcher.addUri(“com.baidumap”,”user”,1);

String uri_str=”content://com.baidumap.user”;

Uri  uri=Uri.parse(uri_str);

Int code=urimatcher.match(uri);

ContentUris:帮助类,拼接id到Uri中或截取Uri中id的值

String uri_str=”content://com.baidumap.user”;

Uri  uri=Uri.parse(uri_str);

Uri new_uri=ContentUris.WithAppendedId(uri,10);

获取Uri中的Id值

//content://com.baidumap/user/10//10;

2.如何实现自定义ContentProvider

a)      定义类继承ContentProvider,实现六个方法

GetType()//返回数据的Mime_type值,自定义用不到。

OnCreate()//实例化数据库获得SQLiteDatabase对象

Delete()

Query()

Insert()

Update()

通过SQLiteDataBase进行增删改查

b)     在Manifest.xml文件中配置(暴露给其他应用)

<provider

Android:name=””

Android:authorities=””

Android:exported=”true”>

</provider>

3.Uri的组成部分?

Content://com.example.transportationprovider/trains/122

A.     前缀标识,任何Uri都有一个固定的前缀,content://表明这是ContentProvider中使用的Uri

B.      数据的权限标识,要求唯一。

C.      路径标识,代表Uri所要访问的具体数据表

D.     Id信息,C中数据表的某一个Id值。

 

 

四.Android 四大组件之BroadcastReceiver

1.BroadcastReceiver的概念

  可以把广播比喻成为一个系统级的监听器,可以时刻监听手机的状态发生变化,比如说,手机网络信号强度,手机电池电量,收到短信,收到电话等。

2.注册广播的两种方式

新建类继承BroadCastReceiver 重写onReceiver() 方法,在AndroidManifast.xml注册广播

静态注册广播

<receiver

android:name="com.bawei.demo.activity.MyReceiver">

<intent-filter >

<action

android:name="com.bawei.demo.MY_RECEIVER"/>

 </intent-filter>        

</receiver>

特点:不需要手动注销这个广播,不是不能注销,因为我们想一直使用这个广播。静态注册的广播不管应用程序是否启动或者运行,广播依然有效。

 

动态注册广播通过Java代码

MyReceiver receiver=newMyReceiver();

IntentFilter filter=newIntentFilter(ACTION);

registerReceiver(receiver,filter);  //注册广播

//注销广播

unregisterReciver(receiver);

这种广播使用起来比较随便,可以随时注销。

广播的使用场景:不是固定的,根据不同的业务需求来决定。

特点:系统广播不需要我们主动调用某些方法发送广播,系统会自动发送。我们只需要重写OnReceiver方法,然后实现不同的功能即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值