Android之——ContentResolver查詢的三種方式

來源:互聯網
上載者:User

標籤:esc   資料庫   cookie   roi   final   class   tracking   oid   private   

轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/47785491

今天做到一個小項目。查詢手機中簡訊的資訊,當然得去系統暴露出來的資料庫中去查詢了,後來發現有三種方式能夠選擇,以下一一寫出來。

1、方式一

 第一種方式,採用 getContentResolver().query()方法在主線程中查詢資料。這樣的查詢方式是不是非同步查詢的,直接在UI線程中查詢資料,代碼例如以下:

Cursor cursor1 = getContentResolver().query(Sms.CONVESATION_URI, CONVERSATION_PROJECTION,null, null," sms.date desc");while (cursor1.moveToNext()) {Log.i("cursor1", String.valueOf(cursor1.getInt(0)));Log.i("cursor1", cursor1.getString(1));Log.i("cursor1", cursor1.getString(2));}cursor1.close();
2、方式二

 另外一種查詢方式。這樣的查詢相同是在UI線程中查詢資料。只是這樣的方式得到的Cursor不用手動去關閉,是Activity自己主動會去關閉的,cursor由activity去管理,代碼例如以下:

Cursor cursor2 = managedQuery(Sms.CONVESATION_URI, CONVERSATION_PROJECTION, null, null, "sms.date desc");while (cursor2.moveToNext()) {Log.i("cursor2", String.valueOf(cursor2.getInt(0)));Log.i("cursor2", cursor2.getString(1));Log.i("cursor2", cursor2.getString(2));}
3、方式三

第三種查詢方式,這樣的方式是利用Android提供的非同步查詢方塊架AsyncQueryHandler,/是一種非同步查詢方式,當單查詢完成後。會調用onQueryComplete(token, cookie, cursor)通知查詢完成,而且傳回cursor。

代碼例如以下:

private void startQuery() {Uri uri = Sms.CONVESATION_URI;mQueryHandler.startQuery(0, null, uri, CONVERSATION_PROJECTION, null, null, "sms.date desc");}// 寫一個非同步查詢類private final class QueryHandler extends AsyncQueryHandler {public QueryHandler(ContentResolver cr) {super(cr);}@Overrideprotected void onQueryComplete(int token, Object cookie, Cursor cursor) {super.onQueryComplete(token, cookie, cursor);// 更新mAdapter的CursormAdapter.changeCursor(cursor);}}

Android開發中效能最佳化始終要謹記在心。所以假設資料量略微大點都要使用非同步查詢。盡量避免在UI線程中做耗時操作,而查詢而言,利用Android提供好的非同步查詢方塊架是最適合的了。事實上AsyncQueryHandler也是封裝了Handler來實現的。另一點,一般在查詢本地的應用的資料的時候要去採用CursorAdapter。

Android之——ContentResolver查詢的三種方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.