android - 异步任务调用期间未显示进度对话框

标签 android android-asynctask progressdialog

好吧,我正在尝试获取一个进度对话框,以显示何时从互联网下载数据并将其应用于用户界面。我的 asynctask 工作正常,它运行所有步骤,但它从未显示对话框。我不知道我在这里做错了什么,我几乎碰壁了。我什至尝试将异步任务放入新的可运行线程中并像这样运行它,这也没有显示对话框。我这样调用异步任务

    new runningMan().execute();

这是我尝试运行的代码。

private class runningMan extends AsyncTask<Void, Void, Integer>
{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        Log.d("Runningman: ", "Started running");
        //this method will be running on UI thread
        progress = ProgressDialog.show(PromotionMain.this, "Loading", "PleaseWait", true);

    }
    @Override
    protected Integer doInBackground(Void... params) {
        //parse the JSON string
        JSONParser jp = new JSONParser();
        try {
            Log.d(username , password);
            jp.parsesData(promos, myJson, pictureArray, pathArray, labelArray);
            Log.d("Runningman: ", "Finished parsing");
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 1;
    }
    @Override
    protected void onPostExecute(Integer result) {
        super.onPostExecute(result);
        ArrayList<ListItem> listData = getListData();
        fillListView(listData);
        Log.d("Runningman: ", "Finished runing");
        //this method will be running on UI thread
        progress.dismiss();
    }

}

感谢您对此提供的任何帮助。

最佳答案

调用“super.onPreExecute();”和“super.onPostExecute(结果);”在进度对话框的代码之后。或者更好的是,摆脱他们(如果你没有理由调用他们)。

使用以下代码:

private class runningMan extends AsyncTask<Void, Void, Integer>
{

    @Override
    protected void onPreExecute() {

        Log.d("Runningman: ", "Started running");
        //this method will be running on UI thread
        progress = ProgressDialog.show(PromotionMain.this, "Loading", "PleaseWait", true);
        super.onPreExecute();

    }
    @Override
    protected Integer doInBackground(Void... params) {
        //parse the JSON string
        JSONParser jp = new JSONParser();
        try {
            Log.d(username , password);
            jp.parsesData(promos, myJson, pictureArray, pathArray, labelArray);
            Log.d("Runningman: ", "Finished parsing");
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 1;
    }
    @Override
    protected void onPostExecute(Integer result) {
        ArrayList<ListItem> listData = getListData();
        fillListView(listData);
        Log.d("Runningman: ", "Finished runing");
        //this method will be running on UI thread
        progress.dismiss();
        super.onPostExecute(result);
    }

}

关于android - 异步任务调用期间未显示进度对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706544/

相关文章:

安卓 : Intent crashing the app

android - 具有多线程功能的Android相机框架处理

java - android中的弱引用/异步任务模式

android - 只有创建 View 层次结构的原始线程才能触摸其 View 。安卓

android - 进度对话框未完成 - Android

android - 尝试显示警报对话框时窗口泄漏

java - 在sqlite数据库中多次插入相同的数据

java - 使用 Kotlin 时出现“java.lang.NumberFormatException : Invalid double' for European languages,”

java - 如何使用退出按钮销毁应用程序及其所有 Activity

android - 为什么 AsyncTasks 不会在 Android 中被销毁