gpt4 book ai didi

java - 已 root 的 Droid 上的 AsyncTask 问题

转载 作者:行者123 更新时间:2023-12-02 00:52:54 25 4
gpt4 key购买 nike

我在 Android 市场上有一个名为 DigiClock 小部件的小部件,在上次更新后,我在已 root 的摩托罗拉 Droid 上遇到了一些极其罕见和随机的问题(可能还有其他手机也存在此问题,但唯一的我收到的回复来自 root 的 droid 用户)。当启动一个运行 AsyncTask 的 Activity 时,会出现此问题,该 Activity 从设备中检索所有已安装的应用程序,同时显示 ProgressDialog(水平样式)。适用的java代码文件可以在这里找到:

http://code.google.com/p/android-digiclockwidget/source/browse/trunk/src/com/davidgoemans/simpleClockWidget/LauncherChooser.java

如果您希望区分工作版本和非工作版本之间所做的更改,可以在此处找到:

http://code.google.com/p/android-digiclockwidget/source/diff?spec=svn10&old=7&r=9&format=side&path=/trunk/src/com/davidgoemans/simpleClockWidget/LauncherChooser.java

机器人上似乎发生的事情是:* 弹出进度框* 进度框在运行完成之前关闭* 显示空列表

似乎获取应用程序的 AsyncTask 已被终止。这可能吗?

谢谢,大卫

编辑:

发现问题,结果发现是在 Android 2.0(不是 2.1 或 1.6)中

列出软件包 = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);

在我的情况下崩溃了,但是

列出软件包 = getPackageManager().getInstalledPackages(0);

没有。

最佳答案

我不确定这是否是导致症状的原因,但我可以看到代码存在一些问题:

  • 除了主 UI 线程之外,您不得在任何线程中操作诸如 ProgressDialog 之类的 UI 对象,因为 UI 对象不是线程安全的。不要调用progressDialog.setProgress(),而是调用AsyncTask.publishProgress(),然后重写AsyncTask.onProgressUpdate()。

http://developer.android.com/resources/articles/painless-threading.html

  • 此外,您的代码不会阻止两个线程同时访问“menuEntries”。修复此部分的最简单方法是将 setListAdapter() 的调用移出 onCreate() 并移至 onPostExecute()。

关于java - 已 root 的 Droid 上的 AsyncTask 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com