0

我正在编写一个需要列出所有 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();

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

谢谢你的时间!

4

1 回答 1

1

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

于 2013-02-14T20:47:32.457 回答