如何从异步任务中获取字符串并在后台执行

时间:2016-03-15 19:45:29

标签: android android-asynctask

我是异步任务的新手,但我需要从后台方法中完成的异步任务中获取一个字符串 例如

AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                try {

                    final MobileServiceList<AppDirectory> result =
                            mDirectoryTable.where().field("Family_Id").eq(11).execute().get();
                    for (AppDirectory item : result) {
                        //this is the string that I need to return
                         String neededstring = item.getheadofhousehold;
                    }
                } catch (final Exception e) {

                }
                return null;
            }
        };
//I need "neededstring" to equal result
        String result = task.execute();

2 个答案:

答案 0 :(得分:1)

2种方式:

一种是使用Interface,如下所述: https://stackoverflow.com/a/12575319/1750013

其他人(快速且肮脏),在您的活动中制作一个吸气剂/设定者。在onPostExecute()中,将此字符串设置为setter方法。

答案 1 :(得分:0)

所以你只需返回你想要的字符串,然后在任务结束时将其恢复到post执行后,或者如果你继续循环或数组并且想要返回几个字符串,你可以在更新proggress上使用它一次1个。

这是一个简单的例子:

 private class CustomTask extends AsyncTask<String, Void, String> {

    }

    @Override
    protected String doInBackground(String... params) {
       String str = "string i want to return";

        return str;
    }

    @Override
    protected void onPostExecute(String s) {
        String returned string = s;
    }
}