AsyncTask get()方法无法正常工作

时间:2013-06-20 02:19:20

标签: java android multithreading android-asynctask

我使用以下代码:

//(...)
translationTextView.setText("Searching for translation...");
translationTextView.setVisibility(View.VISIBLE);

myAsyncTask = (MyAsyncTask) new MyAsyncTask().execute(someString);

try {
    //As I understand it should wait here until AsyncTask is completed. But why for the time of execution translateTextView value is ""?
    translationTextView.setText(translateTask.get() + "<BR>");
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (ExecutionException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

问题是在translationTextView完成之前myAsyncTask值为“”。所以它看起来像

translationTextView.setText("Searching for translation...");

未被调用。我做错了什么?

2 个答案:

答案 0 :(得分:2)

它被调用但是你打电话

translationTextView.setText(translateTask.get() + "<BR>");

get()是阻止通话

请尝试在onPostExecute()中设置文字。如果我理解正确,那么这样的事情应该能给你你想要的东西

   //(...)
        translationTextView.setText("Searching for translation...");
        translationTextView.setVisibility(View.VISIBLE);

        myAsyncTask = (MyAsyncTask) new MyAsyncTask().execute(someString);

然后,假设MyAsyncTaskActivity来电translationTextView.setText()的内部类,请插入您尝试从doInBackground()

返回的任何内容

答案 1 :(得分:1)

正如codeMagic指出的那样,如果你还没有覆盖onPostExecute()子类的AsyncTask方法。它在主线程上执行,你应该在那里更新你的UI。