No se puede reanudar el error de actividad
Mi actividad contiene este código para obtener todas las imágenes de la tarjeta SD:
String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.DATA}; Cursor cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media._ID); int count = cursor.getCount(); int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA); int i; for(i = 0; i < count; i++) { cursor.moveToPosition(i); String p = cursor.getString(image_path_index); fd.addToPhonePhoto(p); } cursor.close();
Ocurrió mientras se reanudaba la Actividad:
- Evitar IllegalStateException en SQLiteCursor para Android
- ¿Cómo obtener el valor de la columna desde el cursor sqlite?
- Obtención de base de datos SQLite y almacenamiento en una matriz de objetos
- Ordenar los datos de la base de datos y mostrarlos en la vista de lista
- Android SQLite ORDER BY no funciona
03-14 14: 06: 48.380: E / AndroidRuntime (20793): java.lang.RuntimeException: No se puede reanudar la actividad {}: java.lang.RuntimeException: No se puede reanudar la actividad {}: android.database.StaleDataException: Se ha intentado Acceder a un cursor después de haber sido cerrado.
Solo ocurre en Android 4.0. Si en Android 2.x o 3.x, funciona normalmente. Pero si cambio la configuración del sistema que selecciona la opción "no mantener actividades" en "Opciones de desarrollador". El error no se muestra.
Quiero modificar mi código para evitar este error sin cambiar la configuración del sistema. ¿Cómo debo hacerlo?
- Uso de CursorLoader sin ContentProvider
- Cómo enviar cursor de la actividad de Android para fragmentar
- Convertir los resultados de Sqllite Cursor en mi objeto
- ¿Cómo programar un trabajo pesado para su posterior visualización para listas?
- ¿Usando SimpleCursorAdapter con Spinner?
- Cursor de cierre en la base de datos SQLite explícitamente, necesarios o no necesarios?
- Android: ¿Cómo crear mi propia clase de cursor?
- ¿Cómo usar managedQuery en el servicio de Android?
Creo que esto es debido a la llamada managedQuery
+ que cierre el cursor. Desde los documentos del método managedQuery()
:
Advertencia: No llame a close () en un cursor obtenido usando este método, porque la actividad lo hará por usted en el momento apropiado. Sin embargo, si llama a stopManagingCursor (Cursor) en un cursor de una consulta administrada, el sistema no cierra automáticamente el cursor y, en ese caso, debe llamar a close ().
Deje el cursor para que el sistema Android administre y no llame a cursor.close();
.
Note:
El método managedQuery
está obsoleto y debe evitarse , implementar CursorLoaders
en CursorLoaders
lugar. Más información acerca de CursorLoaders
se puede encontrar en developer.android.com
.
La función, managedQuery () está obsoleta.
Por favor use getContentResolver (). Query ().
Los parámetros son los mismos.
Eliminar cursor.close();
En tu código funciona bien definitivamente