java - 我需要使用多个 AsyncTask 子类吗?

标签 java android multithreading task

我的应用程序具有 FTP 功能,现在我想为各种操作(连接、下载、上传、文件列表等)实现一个 ProgressDialog 我在堆栈上找到了这个 fragment ,它似乎是一个很好的起点。

public class LoadData extends AsyncTask<Void, Void, Void> {
        ProgressDialog progressDialog;
        //declare other objects as per your need
        @Override
        protected void onPreExecute()
        {
            progressDialog= ProgressDialog.show(FTPConnector.this, "Please wait for ","Process Description Text", true);

            //do initialization of required objects objects here                
        };      
        @Override
        protected Void doInBackground(Void... params)
        {   

             //do loading operation here  
            return null;
        }       
        @Override
        protected void onPostExecute(Void result)
        {
            super.onPostExecute(result);
            progressDialog.dismiss();
        };
     }

我已将其实现为 FTPConnector 类的子类,其中包含用于连接、下载、上传、列表文件、重命名、删除的各种方法。我需要为每个 FTP 操作创建 ASyncTask 的子类吗?如果没有我该怎么办?

最佳答案

首先,我的印象是,使用 AsyncTask 作为 Activity 的子类是不受欢迎的,因为任务将保留对启动它的 Activity 的引用,这可能会导致问题。我通常使用 AsyncTask 作为它自己的类,并在执行它的 Activity 的上下文中传递。你应该调查一下。

其次,您可以为每个服务器事务执行不同的任务。我想这取决于它们的数量或您的应用程序有多复杂。除此之外,您可以在 doInBackground 方法中使用一个带有 switch 语句的类,并传入一个字符串标记作为可变参数之一(假设您的任务仅采用字符串作为初始参数)。这看起来既麻烦又丑陋。

我可能只会为每笔交易执行一项任务。

关于java - 我需要使用多个 AsyncTask 子类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702349/

相关文章:

java - 我在 Javadoc 中与谁交谈?

java - 我的浏览器中显示的可分页数据错误

iphone - 同步写入控制台

objective-c - 在要求非常高的应用程序上强制更新 UI

java - 通过扩展 Thread 类或实现 Runnable 创建线程哪个更可取?

java - 使用 mFusedLocationClient 获取 Firebase 服务中的当前位置

java - 定位装置(相交圆)

android - 弹出窗口的事件方法未触发

java - 如何在 Android 中将字节数组转换为 PDF 文件?

android - 设置 listView 不同项目之间的空间