Android LoadManager无法回调onLoadFinish问题
来源:互联网 发布:淘宝怎么删除仓库宝贝 编辑:程序博客网 时间:2024/05/23 19:09
前言
Android LoadManager是3.0之后引入的,现在都8.0了,项目中可以不用考虑低版本的适配,完全可以使用,我项目中用的比较多,近期发现,LoadManager 有时无法回调onLoadFinish的方法.
解决方法
重载onStartLoading方法
加入forceLoad()(意思是强制执行)强制执行该回调方法
package com.contentproviderdb;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.support.v4.content.AsyncTaskLoader;/** * Created by sdj on 2017/9/7. */public class LoadInstance extends AsyncTaskLoader<User> { private User user; private Context context; private static final String URIS = "content://com.contentproviderdb.TestContentProvider"; public LoadInstance(Context context) { super(context); this.context = context; user = new User(); } @Override public void stopLoading() { super.stopLoading(); cancelLoad(); } @Override protected void onStartLoading() { super.onStartLoading(); forceLoad(); } @Override public User loadInBackground() { Uri uri = Uri.parse(URIS); Cursor cursor = context.getContentResolver().query(uri, null, null, null, null); if (null != cursor && cursor.getCount() > 0) { StringBuilder stringBuilder = new StringBuilder("用户列表如下:\n"); while (cursor.moveToNext()) { stringBuilder.append(cursor.getString(cursor.getColumnIndex("userName")) + " 密码= " + cursor.getString(cursor.getColumnIndex("userPwd")) + "\n"); } user.setUserName(stringBuilder.toString()); } return user; }}
参考相关资料链接如下:
onLoadFinish无法回调问题
小彩蛋
LoadManager有在android.app.包下面的LoadManager和android.support.v4包下的LoadManager,这两个有什么区别吗,答案是肯定的.
因为android.app.LoadManager是在android 3.0(API 11)上引入的,所以3.0之前的手机使用loadManager会报错的。
大家都知道,android版本升级后,google官方会提供Android Support Library package 系列的包来保证高版本sdk开发的向下兼容性,下面是一些注意事项:
gradle引用appcompat-v7包的时候就不需要引用v4了,因为v7里默认包含了v4包;
compile ‘com.android.support:appcompat-v7:21.0.3’ 中的21代表API level 21推出的兼容包.
v4包冲突这个错误:多个module所引用的v4包版本不一致造成的; 把其他module的v4包修改成主module所使用的v4包即可!
support-v4
用在API lever 4(即Android 1.6)或者更高版本之上。它包含了相对更多的内容,而且用的更为广泛,例如:Fragment,NotificationCompat,
LoadBroadcastManager,ViewPager,PageTabAtrip,Loader,FileProvider 等
Gradle引用方法:
compile 'com.android.support:support-v4:21.0.3'
support-v7
这个包是为了考虑API level 7(即Android 2.1)及以上版本而设计的,但是v7是要依赖v4这个包的,v7支持了Action Bar以及一些Theme的兼容。
Gradle引用方法:
compile 'com.android.support:appcompat-v7:21.0.3'
所以说,建议大家还是使用V4包的Fragment和loadManager,基本系统1.6以上的平台都是可以做到兼容的.
谷歌新出的一些控件,大家也是可以用的,比如Android O 8.0里面的ResizeTextView,都是可以用到项目中的,谷歌
的向下兼容包可以到官网去查看引用,这样不会用存在版本上的问题!
阅读全文
1 0
- Android LoadManager无法回调onLoadFinish问题
- flex LoadManager
- Android 三星手机拍照无法收到回调问题
- Android模拟器无法上网问题
- Android模拟器无法上网问题
- Android模拟器无法上网问题
- Android模拟器无法上网问题
- Android模拟器无法上网问题
- Android模拟器无法上网问题
- android 模拟器无法上网问题
- Android模拟器无法上网问题
- android widget无法点击问题
- Android SDK无法更新问题
- Android模拟器无法上网问题
- Android SDK 无法上网问题
- Android SDK无法更新问题
- android无法运行问题处理
- android sdk 无法更新问题
- FP-growth算法发现频繁项集(二)——发现频繁项集
- 利用ViewPager实现的Android轮播|定时器的使用
- 对TCP状态的新理解
- Android发版中存在的一些坑
- 零碎知识点
- Android LoadManager无法回调onLoadFinish问题
- 算法导论(一)——渐近分析,递归解法
- sass文件的中的@mixin 和%
- php源码安装扩展
- MSC Patran 2017.0.1 Win64 1DVD
- (滚动加载图片)懒加载实现原理
- 【16】vue.js — 组件
- Java web项目使用webSocket
- Android零基础入门第59节:AnalogClock、DigitalClock和TextClock时钟组件