android - 多次执行 AsyncTask? [安卓]

标签 android android-asynctask

当用户单击按钮时,我调用此方法,我想执行多个 AsyncTask 调用以上传不同的内容。 (一些文字,照片,然后是视频)。我很好地执行了第一个方法(文本)但是我无法开始下一个调用/执行(backgroundTask.execute)因为第一个没有完成。

我的问题:

How can i call my AsyncTask so i can upload everything at once? (one button click)

我尝试在 onPostExecute 上设置它,我更新一个变量,然后在这个方法中我有一个简单的 if 语句来检查该变量是否已更改但它显然没有工作。

我是应该等每个任务完成后再开始下一个任务,还是应该同时进行?

安卓代码:

public void UploadEverything(String encodedImage){
    //Gets the email form the user
    SharedPreferences UserCredentials = getSharedPreferences("UserCredentials", Context.MODE_PRIVATE);
    ProductOwnerEmail = UserCredentials.getString("UserEmail", "");


    String method = "ProductDetails";
    BackgroundTask backgroundTask = new BackgroundTask(this);
    backgroundTask.execute(method, ProductOwnerEmail, ProductName, Seller_Category, ProductKeyCode, DescriptionPoint, DescriptionPoint2, DescriptionPoint3);


    if (BackgroundTask.DetailsUploaded.equals("true")) {
        String PhotoMethod = "Photo";
        //BackgroundTask backgroundTask = new BackgroundTask(this);
        backgroundTask.execute(PhotoMethod, ProductOwnerEmail, ProductName, encodedImage);
    }


    if(BackgroundTask.PhotoUploaded.equals("true")) {
        String SevenSecVideoMethod = "7secVideo";
        //BackgroundTask backgroundTask = new BackgroundTask(this);
        backgroundTask.execute(SevenSecVideoMethod, ProductOwnerEmail, ProductName, String.valueOf(selectedPath));
    }




    Toast.makeText(SellerHomePage.this, "Product has been uploaded!", Toast.LENGTH_SHORT).show();
}

最佳答案

您的问题仍然不清楚,但我的理解是 - 您希望单击一次按钮即可上传所有数据。所以这是你可以做到的,

如果按钮点击事件调用你的asyncTask

@Override
public void onClick(View v) {
    yourAsyncTask.execute();
}

现在它将执行您的 asyncTask,因此在您的 asyncTask 的 onPreExecute() 方法中,您可以获取所有要上传的数据。

@Override
public void onPreExecute() {
    field1 = //Some Text;
    field2 = //Any Image;
    field3 = //Any Video;
}

现在在 doInBackground() 方法中,您可以将所有字段上传到您想要的任何位置。

关于android - 多次执行 AsyncTask? [安卓],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026917/

相关文章:

android - 如何在更改文本输入时使用异步任务执行搜索服务

Android:如何以编程方式设置 TableRow 中 ImageView 的宽度

java - 糖ORM : Class cast exception when trying to cast a context from getApplicationContext()

android - 无法在 JNI 中更新 jobobject

java - Android Wear 加速度计仅提供 +- 2g

android - 在 Fragment android 中实现 AsyncTask

android - Gradle DSL 方法未找到 : 'buildConfigField()'

android - 自定义进度对话框

java - 读取 USB 数据而不阻塞 UI

android - 异步任务后更新 ListFragment