2013-02-14 73 views
0

我正在編寫一個需要列出所有活動和已禁用軟件包的Android應用程序。我想顯示一個進度對話框,因爲它需要一段時間,並且我不希望在過程完成時讓屏幕「掛起」。在UI任務期間不顯示進度對話框

這是重要的片段:

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

在進度對話框中調用show()不會立即顯示它。您需要在加載器或async服務器中檢索軟件包列表,然後在完成後臺工作後關閉進度對話框。在主線程上順序執行所有工作不會允許顯示對話框。