Android AsyncTask:何时启动?

时间:2015-08-25 12:39:16

标签: java android android-asynctask

我正在使用AsyncTask做背景事情。我一直都知道操作只是在AsyncTask中执行并行,但不知道它何时开始。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lec_refer_room);

        String subCode = null;

        try{
            System.out.println(subCode);
        }catch(Exception e){
            finish();
        }

        new GetRefer(subCode, page).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        // this is AsyncTask
    }

我尝试在字符串subCode为空时完成活动。但是上面的代码在GetRefer().executeOnExecutor()

中出现异常

AsyncTask是否与主线程一起启动?
那么如何在AsycTask中使用try-catch?

2 个答案:

答案 0 :(得分:1)

我已经创建了一个示例,向您展示UITableView如何工作,希望它能满足您的要求

AsyncTask

要执行它,您必须执行以下操作:

 public class TaskTest extends AsyncTask<String, Integer, Boolean> {


    protected Boolean doInBackground(String... params) {

        Boolean StringNull = false;
         String subCode = params[0];

         if (subCode == null){
            StringNull = true;
         }

        return StringNull;

    }

    protected void onPostExecute(Boolean result) {
        if (!result) {
             System.out.println(subCode);
        } else {
            finish();
        }
    }
}

编辑(最终代码)

TastkTest tasktest = new TaskTest(); tasktest.execute(subCode);

onCreate()

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_lec_refer_room); String subCode = null; TastkTest tasktest = new TaskTest(); tasktest.execute(subCode); } 仍然相同。

EDIT2

如果你想把它放在InnerClass上,请执行以下操作......

onCreate()

答案 1 :(得分:0)

您可以在finish ()中拨打onCreate(),但这不是您可能想要做的事情,因为用户不知道为什么Activity没有启动。

本文将帮助解释AsyncTask的工作方式:http://hiqes.com/androids-asynctask-explained/