在 AsyncTask 中,取消然后将 setResult 设置为 Result_Canceled
Inside AsyncTask, cancel then setResult to Result_Canceled
我正在 运行使用 AsyncTask 来处理多个图像。我只能检测到操作应该在 运行 期间 stop/cancel 并且必须终止线程和 return 到先前的意图。如何停止线程 运行ning 和 return 到前一个 activity。到目前为止的代码退出当前循环但继续 运行 并给出错误和不需要的结果
private class processImagesThread extends AsyncTask<String, Integer, Bitmap> {
@Override
protected Bitmap doInBackground(String... params) {
for (int i = 0; i < ArrayUris.size(); i++) {
if(failCondition){
Intent resultIntent = new Intent();
setResult(Activity.RESULT_CANCELED);//normally return ok and a URI
this.cancel(true);
finish();
break;
}
}
//further processing continues after failcondition
}
@Override
protected void onCancelled()
{
super.onCancelled();
Intent resultIntent = new Intent();
setResult(Activity.RESULT_CANCELED);
}
}
//previous intent
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_CANCELED) { //Toast to user}}
我重新编译并 运行 使用日志而不是调试器并且 运行 可以使用现有代码。注意确定是否有局部故障。谢谢 Pavan,"return null" 即使在调试器打开的情况下也完全杀死了线程,但那次我没有去 onpostexecute。
我正在 运行使用 AsyncTask 来处理多个图像。我只能检测到操作应该在 运行 期间 stop/cancel 并且必须终止线程和 return 到先前的意图。如何停止线程 运行ning 和 return 到前一个 activity。到目前为止的代码退出当前循环但继续 运行 并给出错误和不需要的结果
private class processImagesThread extends AsyncTask<String, Integer, Bitmap> {
@Override
protected Bitmap doInBackground(String... params) {
for (int i = 0; i < ArrayUris.size(); i++) {
if(failCondition){
Intent resultIntent = new Intent();
setResult(Activity.RESULT_CANCELED);//normally return ok and a URI
this.cancel(true);
finish();
break;
}
}
//further processing continues after failcondition
}
@Override
protected void onCancelled()
{
super.onCancelled();
Intent resultIntent = new Intent();
setResult(Activity.RESULT_CANCELED);
}
}
//previous intent
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_CANCELED) { //Toast to user}}
我重新编译并 运行 使用日志而不是调试器并且 运行 可以使用现有代码。注意确定是否有局部故障。谢谢 Pavan,"return null" 即使在调试器打开的情况下也完全杀死了线程,但那次我没有去 onpostexecute。