首页 > 代码库 > android重点知识
android重点知识
1、handler 与Looper 与MessageQueue 、Message之间的关系
handler:是处理主线程(ui线程)处理耗时操作的线程,通过post message到MessageQueue队列中,使用handler需要实现 handlerMessage方法,通过更新主线程ui
Looper:每个Looper对应一个MessageQueue,在handler之前Looper.prepare()会初始化looper和MessageQueue,最后Looper.loop方法会去循环分发message到指定的handler,改api方法中有一句 msg.target.dispatchMessage(msg); 这就是looper和handler之间的调用
2、hander与 AsyncTask的优缺点
AsyncTask实现的原理和适用的优缺点
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
使用的优点:
简单,快捷
过程可控
使用的缺点:
在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.
Handler异步实现的原理和适用的优缺点
在Handler 异步实现时,涉及到 Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(子线程)运行并生成Message-Looper获取Message并传递给HandlerHandler逐个获取Looper中的Message,并进行UI变更。
使用的优点:
结构清晰,功能定义明确
对于多个后台任务时,简单,清晰
使用的缺点:
在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)
3、android里面几种常见的存储方式
a、Content provider
1) ContentProvider为存储和读取数据提供了统一的接口
2) 使用ContentProvider,应用程序可以实现数据共享
3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)
首先在Androidmanifest.xml中注册provider权限,然后通过getContentResolver() 然后得到contentResolver()对象 可以对该应用进行类似数据库操作一样的增删改成,需要的参数是uri 和参数值,查询一般得到游标Cursor 通过遍历游标获取属性值
b、SharedPreferences
实际上SharedPreferences处理的就是一个key-value(键值对)。SharedPreferences常用来存储一些轻量级的数据. 通过getSharedPreferences()得到改SharedPreferences对象 然后得到edit对象用来put值到改对象中,最后需要edit.commit()来将改对象存储到文件中,最后是以文件形式保存在data/data的指定路径下
c、sqlite存储
SQLite是一种轻量级的小型数据库,虽然比较小,但是功能相对比较完善,一些常见的数据库基本功能也具有,在现在的嵌入式系统中使用该数据库的比较多,因为它占用系统资源很少
需要继承SQLiteOpenHelper 然后helper.getWritableDatabase() 得到SQLiteDatabase 对象,该对象可以对数据进行增删改查操作,提供了key value形式的CURD方法
d、io流存储
e、webview网络存储
android重点知识