【发布时间】:2011-08-17 09:23:13
【问题描述】:
我最近为姜饼开发了一个应用程序。现在我想把它变成蜂窝。 现在我的异步任务有问题。我想将信息(例如字符串)从 asynktask-class 传递到活动,我从它开始。 对不起,这是我第一次使用 asynctasks,所以我还不太了解它。
【问题讨论】:
标签: android android-asynctask android-3.0-honeycomb
我最近为姜饼开发了一个应用程序。现在我想把它变成蜂窝。 现在我的异步任务有问题。我想将信息(例如字符串)从 asynktask-class 传递到活动,我从它开始。 对不起,这是我第一次使用 asynctasks,所以我还不太了解它。
【问题讨论】:
标签: android android-asynctask android-3.0-honeycomb
execute方法返回的是AynscTask本身,需要调用方法AsynkTask.get()才能得到任务的结果(当然如果结果类型是String的话):
String output = new YourTask().execute(Params).get();
【讨论】:
是的,解决方案是让您的AsynkTask 成为您的Activity 的内部类,如果通过将String 传递给Activity,您的意思是您想要设置一个TextView向String 发送文本,您可以在AsynkTask 的onPostExecute() 方法中执行此操作。
假设您的doInBackground() 方法进行了一些处理并构造了一个String,然后它返回String 并将其传递给onPostExecute() 方法,该方法在UIThread 上运行并且可以修改您的@ 987654334@用户界面。
【讨论】:
使用AsyncTask作为内部类,在调用AsyncTask的外部类中声明一个字符串。在asyncTask中,为外部类中声明的字符串赋值。
【讨论】:
Rasel 建议是一个解决方案,你也可以简单地使用 getter setter 方法,它的范围是整个项目
public static String getStr() {
return str;
}
public static void setStr(String str) {
GlobalVariable.str = str;
}
这样使用
GlobalVariable.setStr("this is test");
为了获得它的价值,只需使用
String s = GlobalVariable.getStr();
这将返回最后更新的值。
【讨论】:
我认为 Rasel 的提议是不可接受的。因为 Asynctask 有不同的线程,所以有时在 Asynctask 之后打印任何全局变量都可以在 Asynctask 之前完成。所以它有时会得到 null 或不需要的结果。
【讨论】: