我在我的应用程序中使用了一个加载器,根据使用该加载器对联系人执行查询的结果,我执行了一些计算并将它们存储回Sqlite DB中。我希望这个操作是异步的,但是我混淆了使用异步任务,因为我有很多不同的数据类型要返回,还是应该使用简单的处理程序或AsyncTaskLoader,我希望它简单,因为我是加载器的新手。我试图四处搜索AsyncTaskLoader的示例,但在我的场景上下文中,这三个示例中的任何一个基本而简单的功能示例似乎都很有帮助。
如果您希望使用AsyncTaskLoader,这里有一个很好的示例。
编辑:我决定做一个更简单的解决方案(基于此回购):
public abstract class AsyncTaskLoaderEx<T> extends AsyncTaskLoader<T> {
private static final AtomicInteger sCurrentUniqueId = new AtomicInteger(0);
private T mData;
public boolean hasResult = false;
public static int getNewUniqueLoaderId() {
return sCurrentUniqueId.getAndIncrement();
}
public AsyncTaskLoaderEx(final Context context) {
super(context);
onContentChanged();
}
@Override
protected void onStartLoading() {
if (takeContentChanged())
forceLoad();
//this part should be removed from support library 27.1.0 :
//else if (hasResult)
// deliverResult(mData);
}
@Override
public void deliverResult(final T data) {
mData = data;
hasResult = true;
super.deliverResult(data);
}
@Override
protected void onReset() {
super.onReset();
onStopLoading();
if (hasResult) {
onReleaseResources(mData);
mData = null;
hasResult = false;
}
}
protected void onReleaseResources(T data) {
//nothing to do.
}
public T getResult() {
return mData;
}
}
用法:
getSupportLoaderManager().initLoader(TASK_ID, TASK_BUNDLE, new LoaderManager.LoaderCallbacks<Bitmap>() {
@Override
public Loader<Bitmap> onCreateLoader(final int id, final Bundle args) {
return new ImageLoadingTask(MainActivity.this);
}
@Override
public void onLoadFinished(final Loader<Bitmap> loader, final Bitmap result) {
if (result == null)
return;
//TODO use result
}
@Override
public void onLoaderReset(final Loader<Bitmap> loader) {
}
});
private static class ImageLoadingTask extends AsyncTaskLoaderEx<Bitmap> {
public ImageLoadingTask (Context context) {
super(context);
}
@Override
public Bitmap loadInBackground() {
//TODO load and return bitmap
}
}
编辑:更新,kotlin版本可以在这里找到。
本文向大家介绍独立React.js基本示例,包括了独立React.js基本示例的使用技巧和注意事项,需要的朋友参考一下 首先让我们开始编写一个简单的HTML代码,然后看看如何使用React 基本的React示例 -创建一个简单的div,如下所示- 添加一些样式元素 就像网络应用中的普通html数据一样。现在,我们可能有多个相同的玩家,然后我们必须复制相同的div,如下所示 这些div的结构相同,但
问题内容: 我正在为教育目的制作一个演示ASP.NET MVC应用程序。 我有一个图像/链接将帖子标记为令人反感。我想通过AJAX从服务器请求标记攻击,并检查以确保用户具有此功能。 如果用户这样做,那么我想在数据库中将该帖子标记为令人反感,并返回该标记已通过。如果用户最终无权标记项目,那么我想向客户端返回否定消息,以便我可以弹出一个漂亮的jQuery框,指出它没有通过。 我正在尝试做所有这些而没有
我试图实现一个基本的Hibernate示例,但我无法使其工作。 每次我试着运行它,我都会得到: 线程“main”org.hibernate.hibernate.hibernateException:无法在org.hibernate.engine.JDBC.connections.internal.BasicConnectionCreator.createConnection(BasicConnec
问题内容: 我是Socket.IO的100%新手,并且刚刚安装了它。我试图遵循一些示例,并且可以使服务器端运行,但似乎无法使客户端连接。 以下是我的server.js: 这是我的index.html 当我执行node server.js时,它指示socket.io已启动。 当我加载index.html时,出现一行,指出“调试-服务静态/socket.io.js”,但除此之外,没有控制台消息或其他行
本文向大家介绍Dapper.NET 基本多个结果示例,包括了Dapper.NET 基本多个结果示例的使用技巧和注意事项,需要的朋友参考一下 示例 要在单个查询中获取多个网格,请使用该QueryMultiple方法。然后,您可以通过对返回的连续调用顺序检索每个网格GridReader。
本文向大家介绍PHP抽象类基本用法示例,包括了PHP抽象类基本用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP抽象类基本用法。分享给大家供大家参考,具体如下: 运行上述代码,会提示如下错误信息: Fatal error: Class Managers contains 1 abstract method and must therefore be declared abstr