如何将Arraylist从AsyncTask返回到UI线程

时间:2014-05-26 17:48:06

标签: java android arraylist android-asynctask android-webview

我需要帮助从AsyncTask返回ArrayList OUT的Arraylist或在AsyncTask中设置webview。我试图在AsyncTask中设置一个webview,并得到一个错误,告诉我必须在UI线程中执行此操作。 然后我试图将一个arraylist的反对者从AsyncTask返回到我的UI线程,这也不起作用。

这是我收到的错误:

java.lang.Throwable:警告:在线程' AsyncTask#3'上调用了一个WebView方法。必须在UI线程上调用所有WebView方法。未来版本的WebView可能不支持在其他线程上使用。

的OnCreate() ---->调用我的AsyncTask,然后使用task.execute启动它 AsyncTask本身将在它准备就绪时执行onPostExecute(),然后它将不返回任何内容,因为它是无效的。

代码块1

            public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.tab2);
                    ...
                    ...
                    queriesAsync task = new queriesAsync();
                    task.execute(new String[] { DatabasePath });
                    ...

代码块2

            private class queriesAsync extends AsyncTask<String, Void, ArrayList> {
            @Override
            protected ArrayList doInBackground(String... pathToDB) {
                ///Do something
                return ArrayList;
            }

            @Override
                protected void onPostExecute (ArrayList result){
                // return?
                }
            }

1 个答案:

答案 0 :(得分:2)

我敢打赌你没有使用AsyncTask onPostExecute()ThreaddoInBackground()完成后在用户界面doInBackground()上运行。 onPostExecute()完成后,会将所需结果返回到在Thread上运行的UI。在这里,您可以随意操作{{1}}组件。