【问题标题】:ProgressDialog.show inside AsyncTask stop my Program from executionAsyncTask 中的 ProgressDialog.show 停止执行我的程序
【发布时间】:2013-03-12 21:01:33
【问题描述】:

这是我的代码原型:-

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 处停止,没有崩溃也没有错误。当我评论这部分时,程序执行得很好。我不确定可以做什么。谁能帮我这个。提前致谢。

【问题讨论】:

    标签: android android-asynctask


    【解决方案1】:

    如果您使用 get() 调用 AsyncTask,则会阻塞 UI 线程,并且您的应用可能会停止响应。拨打get(),这样就只是execute()

    objectofanotherthing.execute("");
    

    这意味着现在你的执行是独立于 UI 线程完成的,所以你不能期望你的 String 包含任何有用的东西。为了解决这个问题,使 AsyncTask 成为 Activity 中的嵌套类(您的 sn-p 已经这样做了),让 doInBackground() 返回一些有用的东西,并在 onPostExecute() 中关闭对话框并设置您需要设置的任何内容。

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

    【讨论】:

    • 我按照你说的做了,但我遇到了异常:- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application null
    • @daemon54 确保您的 context 是 Activity 的实例。如果您在 Activity 中使用嵌套的 AsyncTask,则可以使用 something.this 而不是 context
    • 嘿 A--C,我在尝试 Activity.this 时得到了结果,而且 get() 似乎也在使用它。一件更有趣的事情是进度对话框确实会自动关闭。我需要触摸屏幕使其熄灭。关于我能做些什么的任何建议。
    • 顺便说一句,当我尝试在没有 get() 的情况下获得结果时。我得到了空值,所以我不得不重新使用 get()。
    • @daemon54 不确定对话框不会自动关闭,也许您实际上并没有覆盖onPostExecute()Always use @Override annotations。另外关于您的 null 值,这可能是因为您的代码不适用于线程。我在回答中说过 这意味着现在你的执行是独立于 UI 线程完成的,所以你不能指望你的 String 保存任何有用的东西。
    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    相关资源
    最近更新 更多