当前位置: 首页 > news >正文

西安哪家网络公司做网站流程图

西安哪家网络公司做网站,流程图,网站开发市场,有什么做兼职的网站文章目录 深入分析 Android ContentProvider (三)ContentProvider 的高级使用和性能优化1. 高级使用场景1.1. 数据分页加载示例#xff1a;分页加载 1.2. 使用 Loader 实现异步加载示例#xff1a;使用 CursorLoader 加载数据 1.3. ContentProvider 与权限管理示例#xff1… 文章目录 深入分析 Android ContentProvider (三)ContentProvider 的高级使用和性能优化1. 高级使用场景1.1. 数据分页加载示例分页加载 1.2. 使用 Loader 实现异步加载示例使用 CursorLoader 加载数据 1.3. ContentProvider 与权限管理示例配置权限 2. 性能优化策略2.1. 缓存机制示例使用 LruCache 进行缓存 2.2. 批量操作示例批量插入数据 2.3. 使用异步操作示例使用 AsyncTask 进行异步查询 2.4. 索引优化示例创建索引 3. 总结 深入分析 Android ContentProvider (三) ContentProvider 的高级使用和性能优化 在实际应用中合理使用 ContentProvider 并进行性能优化是确保应用高效运行的关键。以下内容将介绍一些高级使用场景和性能优化策略。 1. 高级使用场景 1.1. 数据分页加载 对于大量数据的查询可以通过分页加载提高效率。分页加载常用于列表视图中以避免一次性加载所有数据导致的性能问题。 示例分页加载 在 query 方法中实现分页加载 Override public Cursor query(NonNull Uri uri, Nullable String[] projection, Nullable String selection,Nullable String[] selectionArgs, Nullable String sortOrder) {int limit 20; // 每页加载的数据量int offset 0; // 偏移量String limitClause LIMIT limit OFFSET offset;Cursor cursor;switch (uriMatcher.match(uri)) {case EXAMPLES:cursor database.query(DatabaseHelper.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder limitClause);break;case EXAMPLE_ID:cursor database.query(DatabaseHelper.TABLE_NAME, projection, DatabaseHelper.COLUMN_ID ?,new String[]{String.valueOf(ContentUris.parseId(uri))}, null, null, sortOrder);break;default:throw new IllegalArgumentException(Unknown URI: uri);}cursor.setNotificationUri(getContext().getContentResolver(), uri);return cursor; }在调用端实现分页查询 Uri uri Uri.parse(content://com.example.provider/example); String sortOrder name ASC LIMIT 20 OFFSET 0; // 加载第一页数据 Cursor cursor getContentResolver().query(uri, null, null, null, sortOrder); if (cursor ! null) {while (cursor.moveToNext()) {String name cursor.getString(cursor.getColumnIndexOrThrow(name));// 处理数据}cursor.close(); }1.2. 使用 Loader 实现异步加载 使用 Loader 可以在异步线程中加载数据避免在主线程中进行耗时操作从而保持 UI 的流畅性。CursorLoader 是一个常用的 Loader用于 ContentProvider 的异步查询。 示例使用 CursorLoader 加载数据 实现一个 LoaderManager.LoaderCallbacksCursor 接口 public class ExampleActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacksCursor {private static final int LOADER_ID 1;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_example);getSupportLoaderManager().initLoader(LOADER_ID, null, this);}NonNullOverridepublic LoaderCursor onCreateLoader(int id, Nullable Bundle args) {Uri uri Uri.parse(content://com.example.provider/example);return new CursorLoader(this, uri, null, null, null, name ASC);}Overridepublic void onLoadFinished(NonNull LoaderCursor loader, Cursor data) {// 处理加载完成的数据}Overridepublic void onLoaderReset(NonNull LoaderCursor loader) {// 清理资源} }1.3. ContentProvider 与权限管理 在一些安全性要求较高的场景下合理配置 ContentProvider 的权限是非常重要的。通过权限声明和 URI 权限授予可以确保数据访问的安全性。 示例配置权限 在 AndroidManifest.xml 中声明权限并为 ContentProvider 设置权限 permission android:namecom.example.provider.READ android:protectionLevelsignature / permission android:namecom.example.provider.WRITE android:protectionLevelsignature / providerandroid:name.ExampleProviderandroid:authoritiescom.example.providerandroid:exportedtrueandroid:readPermissioncom.example.provider.READandroid:writePermissioncom.example.provider.WRITE /在代码中授予 URI 权限 getContentResolver().takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);2. 性能优化策略 2.1. 缓存机制 通过缓存机制可以减少对数据库的频繁访问提高数据查询的效率。可以使用内存缓存或磁盘缓存来存储常用数据。 示例使用 LruCache 进行缓存 private LruCacheString, Bitmap mMemoryCache;public void initCache() {final int maxMemory (int) (Runtime.getRuntime().maxMemory() / 1024);final int cacheSize maxMemory / 8;mMemoryCache new LruCache(cacheSize); }public void addBitmapToMemoryCache(String key, Bitmap bitmap) {if (getBitmapFromMemCache(key) null) {mMemoryCache.put(key, bitmap);} }public Bitmap getBitmapFromMemCache(String key) {return mMemoryCache.get(key); }2.2. 批量操作 在对数据进行插入、更新或删除时使用批量操作可以减少数据库的锁定次数提高操作效率。 示例批量插入数据 ArrayListContentProviderOperation operations new ArrayList(); for (int i 0; i 100; i) {ContentValues values new ContentValues();values.put(name, Example i);operations.add(ContentProviderOperation.newInsert(CONTENT_URI).withValues(values).build()); } try {getContentResolver().applyBatch(com.example.provider, operations); } catch (RemoteException | OperationApplicationException e) {e.printStackTrace(); }2.3. 使用异步操作 避免在主线程中进行数据库操作使用 AsyncTask、Loader 或 RxJava 等异步框架进行数据操作确保 UI 的流畅性。 示例使用 AsyncTask 进行异步查询 private class QueryTask extends AsyncTaskVoid, Void, Cursor {Overrideprotected Cursor doInBackground(Void... voids) {Uri uri Uri.parse(content://com.example.provider/example);return getContentResolver().query(uri, null, null, null, name ASC);}Overrideprotected void onPostExecute(Cursor cursor) {// 处理查询结果} }2.4. 索引优化 为频繁查询的字段创建索引可以显著提高查询效率。可以在创建表时添加索引或者在表创建后使用 SQL 语句添加索引。 示例创建索引 private static final String TABLE_CREATE CREATE TABLE TABLE_NAME ( COLUMN_ID INTEGER PRIMARY KEY AUTOINCREMENT, COLUMN_NAME TEXT);;private static final String INDEX_CREATE CREATE INDEX index_name ON TABLE_NAME ( COLUMN_NAME );;Override public void onCreate(SQLiteDatabase db) {db.execSQL(TABLE_CREATE);db.execSQL(INDEX_CREATE); }3. 总结 通过上述高级使用场景和性能优化策略可以更好地利用 ContentProvider 提供的数据共享和跨进程通信功能构建高效、可靠的 Android 应用。在实际开发中根据具体需求合理设计和优化 ContentProvider可以大幅提升应用的性能和用户体验。 欢迎点赞|关注|收藏|评论您的肯定是我创作的动力
http://www.hkea.cn/news/14558657/

相关文章:

  • 高密网站建设价格WordPress屏蔽蜘蛛
  • 做视频网站把视频放在哪里网站建设服务的风险
  • 云南 网站建设h5响应式网站建设方案怎么写
  • 沭阳做网站shy1z网站原型是产品经理做
  • 网站的动画广告横幅怎么做的山东做网站建设公司排名
  • wordpress做小说站互联网保险理赔到底有多难
  • 制作网站单页wordpress mysql5.5
  • 网站谁建设的响应式网站建设源码
  • 企业网站建设排名价格网络营销的主要方法
  • 个人做视频网站视频储存迅博威网站建设
  • wordpress 不显示归档张家界搜索引擎优化
  • 网站建设的自我总结一张图片切块做网站背景
  • 网站开发gif图太多耗资源吗开发安卓app
  • 网站设置字体样式网站建设88
  • 网站建设的后期维护费用wordpress 多字段
  • 金华网站建设平台商务网站建设论文
  • 西宁做网站_君博示范有哪些专门做写字楼的网站
  • 生产企业网站欣赏建材网站开发
  • 做网站都需要哪些费用注册公司要钱吗
  • 公司怎么建立网站哪些大型网站用python做的
  • 网站建设 泰安seo优化厂家
  • 极速网站建设如何开设网站
  • 网站基本特点建设企业网站需要哪些东西
  • 网站单页模板下载外贸网站建设合同
  • 哪个网站可以给图片做链接电商网站建设关键词优化
  • 济宁专业做优化的网站安徽省建设工程信息网企业入口在
  • 做查询快递单号的网站多少钱wordpress如何设置cdn
  • html源码网站下载之家做网站的命题依据
  • 电商网站建设前的市场分析内容怎么区分营销型和展示型的网站
  • 做餐饮酒店网站销售推广