- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个非常简单的长时间运行的任务作为 AsyncTaskLoader:
public class DumbLoader extends AsyncTaskLoader{
private static final String TAG = "DumbLoader";
public DumbLoader(Context context) {
super(context);
}
@Override
public List<String> loadInBackground() {
List<String> allData = new ArrayList<>();
List<String> someData = DummyData.getItems();
notify(someData.size()) ;// publish amount of elements of someData
List<String> someOtherData = DummyData.getSomeOtherItems();
notify(someOtherData.size()); //publish amount of elements of someOtherData
allData.addAll(someData);
allData.addAll(someOtherData);
return allData;
}
}
我有一个实现 LoaderCallbacks 的 Activity :
@Override
public Loader<List<String> onCreateLoader(int i, Bundle bundle) {
return new DumbLoader(this);
}
@Override
public void onLoadFinished(Loader<String> dummyLoader, List<String> result) {
// do something with result
}
@Override
public void onLoaderReset(Loader<String> dummyLoader) {
}
您将如何实现类似 AsyncTask 的publishProgress
?
使用 LoaderManager
的全部目的是在 Context/Orientation 更改时不必使用引用 - 然而,使用 publishProgress 我能想到的唯一方法是传递 Handler
进入我的 DumbLoader 然后通知我。这是一种安全的方法吗?有更好的方法吗?
编辑:我的例子可能有点误导。如果有两个单独的函数都返回我的“最终”结果的值,我可以轻松地为每个函数分别调用 AsyncTaskLoader。我修改了它以可视化“发布”的数据可能与最终结果不同(在这个例子中,我想知道数据的大小,而不是数据)。
最佳答案
在我看来,对于这个用例,indeterminate ProgressBar
是显而易见的选择。我会在 onCreateLoader
被调用时实例化它,并在 onLoadFinished
however, with publishProgress the only way I can think of is passing a Handler into my DumbLoader which then notifies me. Is this a safe way? Are there better ways?
我会使用 LocalBroadcastManager
。 Intent 将仅在您的应用程序内广播。在您的 Activity/Fragment 中注册一个 BroadcastReceiver
并在调用 onReceiver 时更新进度。 BroadcastReceiver
的好处是它总是在 ui 线程上运行
关于android - 扩展 LoaderManager - 如何实现 "publishProgress"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33625156/
我想了解 LoaderManager 做了什么。任何人都可以分享一个例子吗?创建游标时必须使用它们吗?如果不是应该怎么用?非常感谢一个简单的例子。 最佳答案 简单地说,LoaderManager 负责
我正在使用 LoaderManager 从我的手机加载联系人列表的光标。 我实际上只使用此处给出的示例代码: http://developer.android.com/reference/androi
在您的 LoaderManager 中识别 Loader 时,您使用唯一的 ID。我在问这些 id 必须有多独特。 是否每个 Activity 和 fragment 都有自己的 LoaderManag
使用 Loaders 创建 Android 应用程序时,是否每个 Activity 和 Fragment 都有自己的 LoaderManager ?还是应该只有一个LoaderManager应用程序拥
嗨,请有人帮忙,我正在尝试创建一个基本的加载程序。我见过的有关加载器的所有文档都涉及以下内容: public class MyActivity extends Activity
当使用 LoaderManager 时,我是否仍然按照过去的方式管理我的数据库写入并让 Loader 获取更改?我正在为应用程序转换和添加功能,但我仍在适应 Android 平台。 最佳答案 如果您正
restartLoader(int id, Bundle args, LoaderCallbacks callback)创建一个全新的加载器对象?或者它只是通过重置其内部状态来重用旧的? 感谢您的帮助
我有一个 Android 应用,它有一个我经常更新的 Content Provider。为了加载上述数据的列表,我使用了 LoaderManager。 在详细信息页面上,我也使用 LoaderMana
我需要销毁一个加载器,有时我会得到以下异常: java.lang.NullPointerException at android.support.v4.app.FragmentManagerImpl.
好吧,我投降。我想不通。 我正在学习 Udacity 的 Android 基础类(class),需要弄清楚如何使用加载程序加载数据。但是,当我使用以下行时,“this”以红色突出显示并显示以下错误:
我正在构建一个包含 2 个 fragment 的(主从) View :aListFragment 和更详细的 Fragment View 。单击任何项目在列表中显示详细信息 View 。对于 Li
我正在尝试将我的代码从使用游标转换为使用 CursorLoaders。为了支持旧版本的 Android,我安装了支持库,而不是导入 android.content.CursorLoader,而是导入
在 Android 中使用 LoaderManager API 加载依赖查询的首选方法是什么?到目前为止,我能想到的最好的方法是: @Override public void onCreate( Bu
我正在使用 Fragments 和 LoaderManager。我必须启动未知数量的任务,并且它们可能会并行运行(否则我只会重复使用一个加载器)。例如,我有一个 ListView ,每一行可能都有一个
这是我的应用的层次结构: ViewPager 中的 3 个 fragment 包含一个 FrameLayout: 加载微调器,在搜索数据以填充 ListView 时可见。 显示消息的 LinearLa
我有一个使用自定义加载器和光标设置的数据加载系统,该系统在 Activity 和 fragment 中运行良好,但服务中没有加载器管理器(我可以找到)。有谁知道为什么 LoaderManager 被排
这个问题已经有答案了: What is the appropriate replacement of deprecated getSupportLoaderManager()? (6 个回答) 已关闭
我在项目中遇到了 LoaderCallbacks 问题。我已经在 android studio 中实现了 LoaderManager 。每当用户按下搜索按钮时,我都会尝试重新启动加载程序。 publi
我想我了解加载程序应该如何工作等,但我不太确定加载程序如何向 LoaderManager 或应用程序发出未成功完成的信号。执行此操作的最佳方法是什么? 最佳答案 没有内置的方式。捕获所有异常,并返回一
我正在开发一个 android 项目,我需要在服务中使用 contentprovider 进行线程安全数据库相关操作。但是带有回调的 loadermanager 不能在服务中使用。具有回调和 cont
我是一名优秀的程序员,十分优秀!