在UI任务期间未显示进度对话框

时间:2013-02-14 20:45:23

标签: android progressdialog

我正在编写一个需要列出所有Active和Disabled软件包的Android应用程序。我想显示一个进度对话框,因为它需要一段时间,而且我不想保持屏幕"挂起"这个过程完成了。

这是重要的片段:

    pm = getPackageManager();

    ProgressDialog pd = ProgressDialog.show(this, "Please Wait", "Loading Packages...");

    pkgsEn = PackageLister.retrievePackageList(pm, getResources(), PackageLister.PACKAGES_ENABLED);
    pkgsDis = PackageLister.retrievePackageList(pm, getResources(), PackageLister.PACKAGES_DISABLED);

    laEn = new PackageAdapter(getBaseContext(), R.layout.packageinfo, pkgsEn);
    laDis = new PackageAdapter(getBaseContext(), R.layout.packageinfo, pkgsDis);

    lvEn = new ListView(getBaseContext());
    lvDis = new ListView(getBaseContext());

    pd.dismiss();

没有错误消息,它只是冻结屏幕,直到列表完成。

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

在进度对话框中调用show()不会立即显示它。您需要在加载程序或asynctask中检索包列表,然后在后台工作完成后关闭进度对话框。在主线程上按顺序执行所有工作将不允许显示对话框。