1

这是我的代码原型:-

class something extends Activity
{
    protected void onCreate(Bundle savedInstanceState)
    {
        String str = objectofanotherthing.execute("").get();
    }

    class anotherthing extends AsyncTask
    {
        ProgressDialog Dialog;
        protected void onPreExecute()
        {
            Dialog = ProgressDialog.show(context, "Progressing", "Working on it,");
        }

        protected String doInBackground(String... params) 
        {
            ...
        }

        protected void onPostExecute(Integer result)
        { 
            Dialog.dismiss();
        }
    }
}

当我执行我的代码时,我的程序似乎在 ProgressDialog.show 处停止,没有崩溃也没有错误。当我评论这部分时,程序执行得很好。我不确定可以做什么。谁能帮我这个。提前致谢。

4

1 回答 1

2

如果您使用 调用 AsyncTask get(),则会阻塞 UI 线程,并且您的应用可能会停止响应。把它get()叫出来execute()

objectofanotherthing.execute("");

这意味着现在您的执行是独立于 UI 线程完成的,因此您不能期望您的 String 包含任何有用的东西。要解决这个问题,请将 AsyncTask 设置为 Activity 中的嵌套类(您的代码片段已经这样做了),doInBackground()返回一些有用的内容,然后onPostExecute()关闭对话框并设置您需要设置的任何内容。

嵌套类的替代方法是将 Activity 传递给 AsyncTask 或定义接口,但如果 Task 用于一个 Activity,则嵌套更容易。

于 2013-03-12T21:33:00.603 回答