【问题标题】:how to get String from AsyncTask Android如何从 AsyncTask Android 获取字符串
【发布时间】:2011-08-17 09:23:13
【问题描述】:

我最近为姜饼开发了一个应用程序。现在我想把它变成蜂窝。 现在我的异步任务有问题。我想将信息(例如字符串)从 asynktask-class 传递到活动,我从它开始。 对不起,这是我第一次使用 asynctasks,所以我还不太了解它。

【问题讨论】:

    标签: android android-asynctask android-3.0-honeycomb


    【解决方案1】:

    execute方法返回的是AynscTask本身,需要调用方法AsynkTask.get()才能得到任务的结果(当然如果结果类型是String的话):

    String output = new YourTask().execute(Params).get();
    

    【讨论】:

    • 当我问自己完全相同的问题时,这就是我的问题的解决方案。谢谢!
    • 这个答案应该被接受为正确答案。请这样做:-)
    【解决方案2】:

    是的,解决方案是让您的AsynkTask 成为您的Activity 的内部类,如果通过将String 传递给Activity,您的意思是您想要设置一个TextViewString 发送文本,您可以在AsynkTaskonPostExecute() 方法中执行此操作。

    假设您的doInBackground() 方法进行了一些处理并构造了一个String,然后它返回String 并将其传递给onPostExecute() 方法,该方法在UIThread 上运行并且可以修改您的@ 987654334@用户界面。

    【讨论】:

      【解决方案3】:

      使用AsyncTask作为内部类,在调用AsyncTask的外部类中声明一个字符串。在asyncTask中,为外部类中声明的字符串赋值。

      【讨论】:

        【解决方案4】:

        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();
        

        这将返回最后更新的值。

        【讨论】:

        • 我必须把所有这些放在哪里?我以为我必须在 onPostExecute() 方法中执行此操作。但没有任何效果。
        • 我不能将我的 Asynctask 放在我有活动的同一个班级中,我可以吗?因为我可以扩展 Activity 或 Asynctask....
        【解决方案5】:

        我认为 Rasel 的提议是不可接受的。因为 Asynctask 有不同的线程,所以有时在 Asynctask 之后打印任何全局变量都可以在 Asynctask 之前完成。所以它有时会得到 null 或不需要的结果。

        【讨论】:

          猜你喜欢
          • 2012-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多