如何从AsyncTask类onPostExecute方法返回值?

时间:2013-10-02 09:29:55

标签: java android

我尝试使用onPostExecute方法中的字符串,但我必须为此过程编写接口或处理程序。我读了一些东西,但对我来说并不清楚。我的onPostExecute方法:

protected void onPostExecute(String result) {
            try {
                JSONArray jArray = new JSONArray(result);
                JSONObject json_data;
                for (int i = 0; i < jArray.length(); i++) {
                    json_data = jArray.getJSONObject(i);

                t = json_data.getString("name");


                 names.add(t);
              }


        } catch (JSONException e1) {
            e1.printStackTrace();
        } catch (ParseException e1) {
            e1.printStackTrace();
        }
        super.onPostExecute(result);
    }`

1 个答案:

答案 0 :(得分:3)

异步函数不能返回值,因为它们不像普通函数那样被调用。它们不是由另一个函数触发,而是由事件处理程序触发。

在这种情况下,你需要定义一个promise(使用延迟对象,https://github.com/CodeAndMagic/android-deferred-object),它基本上告诉你想要返回的函数“我还不知道它会是什么,但我会我什么时候告诉你。“