国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > OS > 安卓 > 正文

詳細講解Android中使用LoaderManager加載數(shù)據(jù)的方法

2024-09-11 17:15:14
字體:
供稿:網(wǎng)友

Android的設(shè)計之中,任何耗時的操作都不能放在UI主線程之中。所以類似于網(wǎng)絡(luò)操作等等耗時的操作都需要使用異步的實現(xiàn)。而在ContentProvider之中,也有可能存在耗時的操作(當查詢的數(shù)據(jù)量很大的時候),這個時候我們也需要使用異步的調(diào)用來完成數(shù)據(jù)的查詢。

當使用異步的query的時候,我們就需要使用LoaderManager了。使用LoaderManager就可以在不阻塞UI主線程的情況下完成數(shù)據(jù)的加載。

(1)獲取loaderManger:activity.getLoaderManager()

(2)loaderManager的事件回調(diào)接口, LoaderManager.LoaderCallbacks<D>

下面是一個demo,從contentprovider中query數(shù)據(jù)添加到listview中,是異步執(zhí)行的。

MySQLiteOpenHeleper.java:

package com.app.loadermanager;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper; public class MySQLiteOpenHelper extends SQLiteOpenHelper {   public static final String db_name = "test.db3";  public static final int version = 1;   public MySQLiteOpenHelper(Context context) {    super(context, db_name, null, version);  }   @Override  public void onCreate(SQLiteDatabase db) {     String create_sql = "create table tb_student(_id integer primary key autoincrement,name varchar(20),age integer)";    db.execSQL(create_sql);  }   @Override  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {   } }

MyContentProvider.java

package com.app.loadermanager; import android.content.ContentProvider;import android.content.ContentUris;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri; public class MyContentProvider extends ContentProvider {   private MySQLiteOpenHelper helper = null;  private static final UriMatcher matcher = new UriMatcher(      UriMatcher.NO_MATCH);  private static final int students = 1;  static {    matcher.addURI("com.app.contentprovider", "tb_student", students);  }   @Override  public int delete(Uri arg0, String arg1, String[] arg2) {    return 0;  }   @Override  public String getType(Uri arg0) {    return null;  }   @Override  public Uri insert(Uri uri, ContentValues values) {    SQLiteDatabase db = helper.getWritableDatabase();    int flag = matcher.match(uri);    switch (flag) {    case students:      long id = db.insert("tb_student", null, values);      return ContentUris.withAppendedId(uri, id);    }    return null;  }   @Override  public boolean onCreate() {    helper = new MySQLiteOpenHelper(this.getContext());    return true;  }   @Override  public Cursor query(Uri uri, String[] projection, String selection,      String[] selectionArgs, String sortOrder) {    SQLiteDatabase db = helper.getWritableDatabase();    Cursor cursor=db.query("tb_student", projection, selection, selectionArgs, null, null, null);    return cursor;  }   @Override  public int update(Uri uri, ContentValues values, String selection,      String[] selectionArgs) {    return 0;  } }
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 盘锦市| 岗巴县| 耒阳市| 红原县| 蕉岭县| 宣汉县| 台州市| 绥化市| 永城市| 额敏县| 云梦县| 耿马| 田阳县| 禄丰县| 乌拉特前旗| 丰顺县| 金阳县| 阿克| 广河县| 安图县| 鄂州市| 象州县| 尤溪县| 徐汇区| 和林格尔县| 永福县| 嘉祥县| 大埔县| 介休市| 阜康市| 蕲春县| 邻水| 灌阳县| 安阳县| 油尖旺区| 长治市| 五华县| 宜州市| 留坝县| 湖口县| 墨脱县|