android四大组件之contentprovider与service简介
来源:互联网 发布:seo排名优化软件 编辑:程序博客网 时间:2024/06/11 04:35
1.Android核心组件---ContentProvider
===============================================================================
1.ContentProvider是什么
*Android中的一个应用组件(生命周期方法+其他)
*Android中的内容提供者
2.ContentProvider应用场合
*ContentProvider允许对应用程序私有数据的跨进程访问
3.ContentProvider应用的构建及实现过程分析
*内容提供者(ContentProvider端):提供对数据的访问
(1)ContentProvider对象
(2)URI(统一资源标识)
(3)data(数据)
*内容访问者(ContentResolver):访问数据(允许跨进程)
(1)Content(资源访问对象)
(2)ContentResolver(跨进程访问ContentProvider)
(3)获得访问ContentProvider的URI,然后通过URI访问ContentProvider
说明:对于一个内容提供者,可以对应多个内容访问者
4.ContentProvider的案例应用
*访问媒体库(音频,图片,视频):关键是uri
(1)Content
(2)ContentResolver
(3)Media
*访问联系人
(1)Context
(2)ContentResolver
(3)Phone
5.CursorLoader在访问ContentProvider时的应用
定义:CursorLoader本身是一个cursor对象加载器,底层会通过异步任务进行加载,数据加载完成后回调LoaderCallback接口中的相关方法,在这些方法中可进行UI更新
(1)CursorLoader应用步骤
*初始化CursorLoader(在activity中执行,并让activity实现LoaderCallback接口)
getLoaderManager().initLoader(0, args , this);
*根据业务重写loaderCallback接口中的相关方法
(1)创建CursorLoader(一般在onCreateLoader方法中执行)
(2)处理结果(在onLoadFinished方法中执行)
(3)处理重置或销毁操作(在onLoaderReset方法执行)
(2)CursorLoader应用的优势
*底层异步加载(减少对主线程的阻塞)
*底层减少内存泄漏
*底层本身会对数据记性缓存(加入数据没有发生变化,再次查询会从缓存中取出)
6.ContentProviderFAQ
(1)ContentProvider是一个内容提供者,他提供数据的对外(对外指的是其他进程或其他 APP)共享
(2)ContentProvider优势:对外界提供了本应用私有数据的统一访问方式
(3)ContentProvider对外界公开的uri(统一资源标示)格式:content://authorities/path
(4)ContentResolver对象的作用:相当于ContentProvider对外的接口
(5)CursorLoader经常用于什么场合,优势是什么?(经常用于在activity异步访问 ContentProvider的场合)
(6)ContentProvider何时创建(项目启动时,并执行onCreate方法)
7.综合案例(本地音乐要从媒体库只跟你去读)
2.Android核心组件---Service组件
===============================================================================
*Service是什么?
(1)Android中的应用组件(生命周期方法)
(2)Android中的一个应用服务(一般运于后台,提供后台服务)
(3)Android中的一个context(资源访问)
*Service应用场合
(1)Service一般用于长时间的后台服务,耗时操作.
(2)说明:Service执行耗时操作也是要启动工作线程
(3)FAQ:Service中启动工作线程和在activity中启动工作线程不同之处
activity中启动工作线程一般是短时间的耗时,长时间的耗时操作还是建议在 Service中启动的工作线程中,这是因为在Service启动工作线程执行长时间的耗时操作时,此线程的生命力可能更要顽强一些.在Android中假如系统内存不足时可能会考虑优先kill一些优先级较低的进程(activity在后台运行时他所在的进程优先级相对较低,很可能被kill)
Android中进程的类型及优先级(从高到低)
(1)前天进程(优先级最高,允许与用户进行直接交互)
(2)可见进程(可见,不允许与用户进行交互)
(3)服务进程(不可见,后台有service在运行后)
(4)后台进程(不可见,后台没有service在运行后)
(5)空进程(不可见,没有任何应用组件在运行)
*Service组件应用类型
(1)启动模式Service
(2)绑定模式Service
(3)混合模式Service
*Service组件的编写及注册
(1)编写:直接或间接继承Service类型(抽象类型)
(2)注册:在AndroidManifest.xml清单文件进行声明
*Service启动模式的应用
启动模式Service需要调用context对象的startService启动
启动模式Service生命周期方法:
*onCreate(创建时执行)
*onStartCommand(每次启动都执行)
*onDestroy(销毁时执行)
启动模式onStartCommand方法返回值:(表示此service的粘性)
* START_STICKY (具备粘性,service在被非正常kill以后还会重新启动)
* START_STICKY_COMPATIBILITY (START_STICKY 返回值的兼容版本,但不保证被非正常 kill以后还会重新启动))
* START_NOT_STICKY (不具备粘性,被非正常kill以后不会重启)
* START_REDELIVER_INTENT(具备粘性,被非正常kill以后会重启同时会重新传递 intent)
*启动模式onStartCommand方法参数:
*intent(意图对象,可以借助此对象进行参数传递)
*flags(用于标识intent是否是重新传递的intent)
*startId(用于标识这是哪一次请求)
* IntentService在启动模式中的应用
IntentService是一个Service,通常应用于启动模式,并且内置工作线程,通过此工作线程可以执行长时间的耗时操作,此耗时操作直接结束,service会自动关闭,例如在下载是考虑使用此service.
我们使用IntentService,要构建此类型的子类类型然后重写相关抽象方法onHandleIntent(此方法运行在工作线程)。
*Service绑定模式的应用
(1)Service绑定模式概述
Service绑定模式相当于activity与service之间建立了一个长链接(ServiceConnection)
(2)Service对象的绑定与解绑定
*bindService:绑定时传入一个ServiceConnection对象,成功后回调ServiceConnection对 象的相关方法
*unbindService:解绑定,假如在activity中执行了service的绑定操作,在activity销毁之 前解除绑定操作,防止内存泄漏
(3)Service相关生命周期方法
*onCreat(service创建时执行)
*onBind(绑定时执行)
*onUnBind(解除绑定时执行)
*onDestory (Service销毁时执行)
*Service 混合模式应用
Service 混合模式指的是既有Service绑定又有Service启动这些模式
的混合.我们在activity执行service绑定的时候有这样的一个特点,在
activity页面销毁之前一定要解除绑定,但我们又不希望解除绑定以后
这个Service销毁,此时我们就可以在绑定成功以后去启动service,
这样在解除绑定以后Service可以仍旧服务于我们的应用,只有在执行
stopService时,此service才会停止。
- android四大组件之contentprovider与service简介
- Android四大组件之ContentProvider简介
- 四大组件Activity、Service、ContentProvider、BroadcastReceiver简介
- Android 四大组件之Service简介 1
- Android四大组件之Service简介
- Android四大组件之ContentProvider
- android四大组件之ContentProvider
- android四大组件之 ContentProvider
- Android四大组件之ContentProvider
- Android四大组件之ContentProvider
- android 四大组件之ContentProvider
- Android四大组件之ContentProvider
- Android四大组件之ContentProvider
- android四大组件之ContentProvider
- android四大组件之ContentProvider
- Android四大组件之ContentProvider
- Android四大组件之ContentProvider
- Android四大组件之ContentProvider
- 负载均衡的几种实现方式
- YJQ集合
- Parcelable简单使用
- 腾讯2017暑期实习生笔试题解题答案汇总
- Beaglebone Black更新系统的方法http://blog.csdn.net/neuseeker/article/details/50553938
- android四大组件之contentprovider与service简介
- 改革春风吹满地_hdu2036_计算几何
- Codeforces702E Analysis of Pathes in Functional Graph(倍增)
- 51nod 1079 中国剩余定理
- 备份数据库
- memcached如何保存超过30天
- 斯坦福公开课Machine Learning笔记(十三)--ICA
- 图像处理中边缘检测和轮廓检测的区别
- 解决@ResponseBody注解返回中文乱码