第十二章之异步查询
来源:互联网 发布:淘宝商家所在地怎么改 编辑:程序博客网 时间:2024/05/16 18:59
Notes:
一、AsyncQueryHandler是什么
①AsyncQueryHandler(异步的查询操作帮助类,其实它同样可以处理增删改)
继承于Handler
②异步就好像大家一起上公交车,可以不排队,同步就是大家排队上车,一次只能上一个。
Called when an asynchronous delete is completed.
voidCalled when an asynchronous insert is completed.
voidCalled when an asynchronous query is completed.
voidCalled when an asynchronous update is completed.
二、为什么要用AsyncQueryHandler
A helper class to help make handling asynchronous ContentResolver queries easier.
让ContentResolver查询更加容易的帮助类。
三、如何使用AsyncQueryHandler
①继承AsyncQueryHandler类
②提供onXXXComplete方法
③实例化一个AsyncQueryHandler对象
queryHandler = new MySyncQueryHandler(getContentResolver());
④启动查询
queryHandler.startQuery(0, /标识、令牌(不需要)
null, //cookie用来保存数据(一般情况不用)
RawContacts.CONTENT_URI,//ContentProvider的访问的Uri
new String[]{RawContacts._ID},//要返回的列
null, //查询条件
null, //查询条件的值
null); //排序
⑤在子线程(回调函数中)设置数据到适配器
四、具体案例
MainActivity.java
package com.ryan.lsn3_11;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.AsyncQueryHandler;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.provider.ContactsContract.Contacts;import android.provider.ContactsContract.Data;import com.ryan.lsn3_12_2.MainActivity.MySyncQueryHandler;import com.ryan.pojo.Contact;public class MainActivity extends Activity {ContentResolver resolver;List<Contact> list = new ArrayList<Contact>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);resolver = getContentResolver();queryContacts();}public void queryContacts(){//查询raw_contact联系人表Cursor c = resolver.query(Contacts.CONTENT_URI, new String[]{Contacts._ID}, null, null, null);while(c.moveToNext()){Contact contact = new Contact();//获得联系人的String id = c.getString(c.getColumnIndex(Contacts._ID));//根据联系人的id来查询Data表Cursor c1 = resolver.query(Data.CONTENT_URI, new String[]{Data._ID,Data.DATA1,Data.MIMETYPE}, Data.RAW_CONTACT_ID +" = ?", new String[]{id}, null);contact.setId(Integer.parseInt(id));while(c1.moveToNext()){//获得data表的idString data_id = c1.getString(c1.getColumnIndex(Data._ID));//获得数据String data1 = c1.getString(c1.getColumnIndex(Data.DATA1));//获得类型String mimeType = c1.getString(c1.getColumnIndex(Data.MIMETYPE));System.out.println(data_id+"---"+data1+"---"+mimeType);//根据类型来判断数据if(mimeType.equals("vnd.android.cursor.item/phone_v2")){//设置电话号码contact.setPhoneNum(data1);}else if(mimeType.equals("vnd.android.cursor.item/name")){//设置姓名contact.setName(data1);}}c1.close();//添加联系人对象到集合当中list.add(contact);}c.close();for(Contact c1 : list){System.out.println("联系人的id为:"+c1.getId());System.out.println("联系人的电话为:"+c1.getPhoneNum());System.out.println("联系人的姓名为:"+c1.getName());}}}
0 0
- 第十二章之异步查询
- 第十二章查询代码
- Mangos之异步数据库查询
- C++ Primer : 第十二章 : 文本查询程序
- Linux学习之第十二章
- 第十二章 实现单向操作和异步操作(上)
- 第十二章 实现单向操作和异步操作(中)
- 第十二章 实现单向操作和异步操作(下)
- C++ Primer 之 读书笔记 第十二章
- 一步一步走进块驱动之第十二章
- UNIX Network Programming笔记之第十二章
- 第十二章之我的作业
- 《构建之法》第十二章 用户体验
- 编程之战第十二章 丢番图方程
- 第十二章
- 第十二章
- 第十二章
- 第十二章
- 机器学习和计算机视觉相关的数学
- Extjs4.2 Desktop 桌面图标拖动白屏的解决
- LeetCode | Remove Duplicates from Sorted List
- 记录1--ubuntu14安装mentohust
- 【机器学习】文本分类——朴素贝叶斯Bayes
- 第十二章之异步查询
- UVA - 10887 Concatenation of Languages
- 【单调队列】POJ 2823 Sliding Window
- 记录3--ubuntu在grub resume里修复引导
- MYSQL UPDATE
- 计算机网络协议第四章,传输层协议
- dojo小例子(27)去除EnhancedGrid Filter插件中的“任何列”选项
- 李玉刚歌曲汇总
- CMake入门(二)