android基础知识学习

一、四大组件:activity、service、broadcastreceiver和contenprovider

1、activity:凡是可视化的内容均这里显示

2、service:后台运行(退出应用,服务仍然继续运行)

3、broadcastreceiver:广播消息(如电话、短信、开机成功等)

4、contentprovider:为程序间共享数据,如360管家可以读取通讯录等


二、生存期

1、activity的生存期

1)onCreate()    活动创建时调用,作用类似于c++d的构造函数(仅仅个人理解,我也是刚刚开始学)

2)onStart()   不可见转可见时调用,如按返回键时候,一个新的界面从完全不可见变成可见

3)onResume()准备交互时候调用,此时活动位于栈顶,运行状态

4)onPause()切换下一界面时候调用,通常这里将消耗cpu的资源释放掉,保留关键数据

5)onStop()可见切换到不可见时候调用,和onPause的区别是,调用后,onstop不可见,onPause可见,只是失去焦点。调用对话框的例子

6)onDestroy()即将销毁,调用后为销毁状态

7)onRestart()停止状态调用这函数就变为运行状态

需要在配置文件下注册:

<activity  android:name=".xxxactivity"></activity>

2、service的生存期

1)onCreate()首次启动服务时调用,注意这个函数只执行一次。由startService()  调用时创建(被其他类调用,是context中的方法)相应有stopService()结束

2)onStartCommand()每次开启都执行,重复开启不执行oncreate而是这个函数

3)onBinder()提供给外部的接口,获取其返回值即可获得服务的操作

4)onDestroy()服务销毁

当活动开启或绑定服务时候,ServiceConnection中的onServiceConnection和onServiceDisconnected方法让活动与服务建立关系

注册:

<service android:name=".xxxservice"></service>

3、broadcastreceiver的生命周期和应用     

1)onReceive() 传递intent对象,被认为只有这函数调用时候是活跃的。用来接收系统或应用发来的广播,如电量不足、地域变化、来电来信等,可用来通知用户,启动活动、Notificationmanager、开启背景灯、震动设备、播放声音等

2)静态注册,程序退出自动注销

<receiver android:name=".xxxreceiver">注册动作,也就是接收什么类型的广播,在<intent -filter>里面注册<action android:name="..."/></receiver>

此时注意需要设置相应的权限,否则无法接受广播

3)动态广播:

localbroadcastmanager.registerreceiver()注册广播

localbroadcasemanager.sendbroadcast(intent)发送广播

localbroadcastmanager.unregisterreceiver()注销广播

#具体大致如下

(1)实例化一个intentfilter对象

(2)intentfilter对象添加想要接受的广播类型,用addaction()

(3)实例化一个广播接收器

(4)registerreceiver()把两个对象放进去注册,相当于告诉系统,我这个接收器是接收上面那对象的类型广播的

(5)当接收到指定类型广播时候,调用onreceive()函数

(6)最终在销毁的地方要注销注册unregisterreceiver()

注意的是,1、第二步添加类型时候根据情况申请权限。2、静态广播不需要打开应用直接可以接收,而动态广播因为要在oncreate()中执行,需要启动应用。3、静态在配置文件中注册,动态不需要在配置文件注册。静态在配置文件考虑注册和权限,动态只考虑权限。4、自定义广播考虑注册,用sendbroadcast()发送intent对象

4、contextprovider生命周期

1、onCreate()初始化,通常用来数据库创建和升级,只当contentresolver尝试访问我们程序中数据时,才初始化

2、query()查询数据。由uri指定查询的表

3、insert()添加数据,返回新纪录的uri

4、update()更新数据,uri指定的表

5、delete()删除数据,uri指定

6、gettype()根据uri返回相应的MIME

其中uri表示某个应用中某个表,可以指定到某个表的某条数据,是唯一确定的。

7、运用过程讲解

contentprovider作为内容提供器,由谁来访问?contentresolver!通过getcontentresolver()获得其对象即可对提供器的内容进行操作,主要获取内容的uri,因为他是通往提供器的桥梁。

1)urimatcher的match()方法会将刚才传来的uri判断出需要访问哪张表哪条数据,根据情况操作内容提供器里面的数据

2)MIME值分为系统部分和自定义部分,由系统识别,当系统调用gettype()方法后,获得返回值,如果系统不认识,则在查询,删除,更新等操作的uri会被认为不可信任,系统无法得知cursor是否合法,就需要再次验证,通过则操作成功,不通过则失败。验证过程需要消耗资源,所以mime值写对了就可以节省开销。

3)需要注册并申请相应权限

4)用contentresolver操作某一数据时,需要实例化contentvalue对象,添加数据到该对象,由contentresolve操作。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值