【问题标题】:Can I pass different types of parameters to an AsyncTask in Android?我可以将不同类型的参数传递给 Android 中的 AsyncTask 吗?
【发布时间】:2010-10-13 08:13:21
【问题描述】:

我想实现一个通用的线程保存类,它采用 ImageView 的 RessourceId 和存储所需图像文件的 Url (http)。它将下载图像并填充 UiThread 中 ImageView 的 src。

我认为AsyncTask 对我来说是最好的选择。但是我注意到我只能将一种类型的参数传递给doInBackground() 方法。就像一个 URL 数组。真的吗?你会建议我什么?

【问题讨论】:

    标签: android multithreading android-asynctask


    【解决方案1】:

    您可以将参数作为对象传递

    new MyTask().execute(url, str, context);
    
    public class MyTask extends AsyncTask<Object, Void, Void> {
        @Override
        protected Void doInBackground(Object... params) {
                Url url = (Url) params[0];
                String str = (String) params[1];
                Context ctx = (Context) params[2];
    
                return null;
        }
    }
    

    【讨论】:

    【解决方案2】:

    您可以将 setter 方法添加到您的 AsyncTask 实现中,甚至可以定义您自己的构造函数来传递额外的参数。

    或者,如果您的AsyncTask 实现是活动的内部类,您可以访问活动的所有实例变量。我自己更喜欢上面的选项,因为它清楚地表明了任务需要哪些数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多