android - 从 AsyncTask 更新 UI 挂起 SwipeRefreshLayout 加载圈
问题描述
我创建了一个通用的 AsyncTask。它在后台运行良好,但是当我在此任务的 doInBackground 回调中更新 UI 时,它只是多次挂起 SwipeRefreshLayout 的加载圈。我需要这个加载才能顺利运行。我正在使用 AsyncTask 如下
public class backgroundWorker extends AsyncTask<Object, Void, Object>{//params, progress, result
backgroundWorkerCallback callback;
public backgroundWorker(backgroundWorkerCallback _callback) {
this.callback = _callback;
}
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
callback.onPostExecute(result);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Object doInBackground(Object... param)
{
return callback.doInBackground(param);
}
}
backgroundWorkerCallback 是一个接口
public interface backgroundWorkerCallback {
public Object doInBackground(Object param);
public void onPostExecute(Object result);
}
我以这种方式使用这个 AsyncTask
srlStockReport.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
backgroundWorker bw = new backgroundWorker(new backgroundWorkerCallback(){
@Override
public Object doInBackground(Object param)
{
//fetch data from server
//put some data in in Preference
//Load a RecyclerView from list
return null;
}
@Override
public void onPostExecute(Object result)
{
}
});
bw.execute();
}
});
解决方案
推荐阅读
- javascript - Babel 没有在 *.mjs 文件中转换 `class`
- python - 如何将索引添加到 Python 中的列表列表
- scala - akka 流不消耗,只记录 WakeupTimeout
- vue.js - axios 拦截器与 vuejs 自定义组件集成,用于以通用方式显示错误消息
- web-services - Amadeus Cancel PNR XML 返回空响应
- ios - 取消按钮无法在 GMSAutocompleteViewController 中显示
- python - Python:按时间间隔分组
- symfony - ButtonType Symfony 的 isClicked()
- java - RecyclerView 带有过滤器列表的可点击对象
- apache - Httpd.conf 重定向到外部 url apache tomcat