Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根Droid上的AsyncTask出现问题_Java_Android_Root - Fatal编程技术网

Java 根Droid上的AsyncTask出现问题

Java 根Droid上的AsyncTask出现问题,java,android,root,Java,Android,Root,我在Android市场上有一个叫做DigiClock widget的小部件,在上次更新之后,我在植根的Motorola Droids上遇到了一些极其罕见和随机的问题(可能还有其他手机存在这个问题,但我得到的唯一回应是植根的droid用户)。当启动一个活动,该活动运行一个异步任务,该任务在显示ProgressDialog(水平样式)的同时从设备检索所有已安装的应用程序时,就会出现问题。可在此处找到适用的java代码文件: 如果您希望区分工作版本和非工作版本之间所做的更改,可在此处找到: 机器人

我在Android市场上有一个叫做DigiClock widget的小部件,在上次更新之后,我在植根的Motorola Droids上遇到了一些极其罕见和随机的问题(可能还有其他手机存在这个问题,但我得到的唯一回应是植根的droid用户)。当启动一个活动,该活动运行一个异步任务,该任务在显示ProgressDialog(水平样式)的同时从设备检索所有已安装的应用程序时,就会出现问题。可在此处找到适用的java代码文件:

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

机器人身上发生的事情似乎是: *进度框弹出 *进度框在完成运行之前将被解除 *空列表出现

似乎获取应用程序的异步任务正在被终止。这可能吗

谢谢, 大卫

编辑

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

List packages=getPackageManager().getInstalledPackages(PackageManager.GET_活动)

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

List packages = getPackageManager().getInstalledPackages(0);
List packages=getPackageManager().getInstalledPackages(0)


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

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

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

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

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

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

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

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

List packages = getPackageManager().getInstalledPackages(0);

没有。我通过在2.0模拟器中测试发现了这一点。这增加了我现在必须在1.5、1.6、2.0和2.1上测试应用程序的痛苦,而不仅仅是边缘情况://

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

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

List packages = getPackageManager().getInstalledPackages(0);

没有。我通过在2.0模拟器中测试发现了这一点。这增加了我现在必须在1.5、1.6、2.0和2.1而不是边缘情况下测试我的应用程序的痛苦://

你没有异步任务终止时的日志?我无法访问发生异步任务的设备,所以基本上我是用我的用户的话。你没有异步任务被终止时的日志吗?我没有访问发生异步任务的设备的权限,所以基本上我是用我的用户的话。哇,谢谢。我没有意识到ProgressDialog也受到了影响。我今晚会试试看是否管用。哇,谢谢。我没有意识到ProgressDialog也受到了影响。我今晚会试试看是否有效。