如何在 AsyncTask 的后执行方法中获取对 recyclerveiw 适配器进度条的引用

Posted

技术标签:

【中文标题】如何在 AsyncTask 的后执行方法中获取对 recyclerveiw 适配器进度条的引用【英文标题】:How to get a reference to recyclerveiw adapter Progress bar in post execute method of AsyncTask 【发布时间】:2019-07-25 21:59:07 【问题描述】:

这是我要解决的方案。我有一个包含一些要提交到服务器的数据的布局,这个Activity 布局需要上传使用RecyclerView.Adapter 列出的多个文件(附件)。在我的布局底部列出的每个附件中,都有一个进度条,显示状态或已上传到服务器的文件的百分比。单击提交按钮时,它会调用AsyncTask,并且在此Activity 布局的onPostExecute 方法中,我想上传我的附件。

解决此问题的最佳方法是什么?请帮忙。

【问题讨论】:

【参考方案1】:

如果您的异步任务是活动或片段的内部类,您可以简单地从 onPostExecute 中调用活动或片段中的方法

class MyActivity extends Activity


    public void showOrHideProgress(Result result)
     
        // your code here
    

    class MyAsyncTask extends AsyncTask
     
        private final WeakReference><View> progressBarReference;

        public MyAsyncTask(@NonNull View progress)
        
            this.progressBarReference = new WeakReference<>(progress); 
        

        @Override
        protected void onPostExecute(Result result)
        
            super.onPostExecute(result);
            showOrHideProgress(result); // or do something with progressBarReference
        
    

【讨论】:

非常感谢,现在如何获取每个recycler view Adapter的进度条参考? 您可以将适配器或进度视图本身的引用传递给 AsyncTask,但要注意内存泄漏。 developer.android.com/studio/profile/memory-profiler.html 怎么做? ,这是真正的问题。 创建一个 AsyncTask 构造函数并将所需的对象作为参数传递。 这只是recyclerview项目的一个进度条还是多个进度条?

以上是关于如何在 AsyncTask 的后执行方法中获取对 recyclerveiw 适配器进度条的引用的主要内容,如果未能解决你的问题,请参考以下文章

如何获取AsyncTask 异步处理的返回值

取消执行AsyncTask的理想方法

使用 AsyncTask 从 JSON 中获取数据

在 Asynctask 的 onPostExecute() 方法中更改片段

我如何从AsyncTask中的数据库类中获取对象?

使用 AsyncTask 根据值定义文本颜色