当用户单击按钮时,我调用此方法,我想执行多个 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/