Pregunta

Tengo un widget en el mercado androide llamado widget de DigiClock, y después de la última actualización que he estado teniendo algunos problemas extremadamente raras y al azar en Droids Motorola arraigados (puede haber otros teléfonos con el problema, pero el único respuestas que he tenido son de usuarios droides arraigadas). El problema se produce cuando se inicia una actividad que ejecuta un AsyncTask que recupera todas las aplicaciones instaladas en el dispositivo mientras que muestra una ProgressDialog (estilo horizontal). El archivo de código Java correspondiente puede encontrarse aquí:

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

Si desea diff los cambios realizados entre un trabajo y la versión no trabajan, que se pueden encontrar aquí:

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

Lo que parece suceder en el androide es: * Caja de progreso aparece * Caja de Progreso descarta antes de que haya terminado de ejecutar * Lista vacía aparece

Parece que la AsyncTask que recupera las aplicaciones se perder la vida. ¿Es esto posible?

Gracias, David

Editar

encontrado el problema, resulta que en Android 2.0 (NO 2.1 o 1.6)

Lista los paquetes = getPackageManager () (getInstalledPackages PackageManager.GET_ACTIVITIES);.

se estrella en mi situación, pero

Lista los paquetes = getPackageManager () getInstalledPackages (0);.

no.

¿Fue útil?

Solución 2

encontrado el problema , resulta que en Android 2.0 (NO 2.1 o 1.6)

List packages = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);

se estrella en mi situación, pero

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

no lo hace. He encontrado esta ensayando en el emulador 2.0. Esto se suma al dolor de tener que probar mi aplicación ahora en 1.5, 1.6, 2.0 y 2.1 en lugar de sólo los casos marginales: /

Otros consejos

No estoy seguro de si se trata de la causa de los síntomas, pero puedo ver algunos problemas con el código:

  • No debe manipular objetos de interfaz de usuario como su ProgressDialog de cualquier tema excepto por el hilo principal de interfaz de usuario, ya que los objetos de interfaz de usuario no son seguros para subprocesos. En lugar de llamar progressDialog.setProgress (), llame AsyncTask.publishProgress () y luego anular AsyncTask.onProgressUpdate ().

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

  • Además, su código no impide que ambos hilos accedan "menuEntries" al mismo tiempo. La forma más sencilla de solucionar esta parte sería mover la llamada a setListAdapter () de onCreate () y en onPostExecute ().
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top