【发布时间】:2011-11-14 12:21:52
【问题描述】:
正如我在另一个问题HERE 上所问的那样,PackageManager.getInstalledPackages() 似乎与线程处理不兼容。正如 CommonsWare 所说 HERE:
可能需要在主应用程序上调用 PackageManager 线程,出于某种原因
因此,将它放在线程上会产生不良行为,在我的 Activity 中多次进入和退出会使显示的应用程序列表有时带有项目,有时为空。拥有 UI 线程中的所有内容就像做梦一样,每次加载都很好。问题是,用户期望某种反馈,而我需要提供反馈。当我开始活动时,屏幕保持黑屏 3-4-5-6 秒(取决于安装的设备和应用程序)。我怎样才能提供某种反馈?我正在考虑 ProgressDialog 但我不知道如何启动它。谢谢。
【问题讨论】:
-
我怀疑不是这样,但你确定它是对 PackageManager.getInstalledPackages() 的调用需要时间,而不是循环通过返回的数据使其暂停?您可以在主线程上获取数据,然后在 AsyncTask 中循环遍历它,但我怀疑这是问题所在。
-
实际上你是对的,在 UI 线程中获取 intalled Packages() 并在 AsyncTask 中进行循环就可以完成这项工作。写一个答案,这样我就可以接受了。谢谢
标签: android multithreading android-asynctask progressdialog