qué - La base de datos no se eliminará cuando desinstale la aplicación de Android
¿qué es datos caché en un celular? (5)
- Echa un vistazo a esta respuesta SO:
¿Qué sucede con una base de datos Sqlite cuando se elimina la aplicación?
¿Funciona su base de datos (aparte de no eliminar al eliminar la aplicación)?
Si no funciona correctamente, es posible que desee echar un vistazo a:
http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html
Aunque esto no está necesariamente relacionado con su problema, es posible que desee considerar la creación de un open()
y close()
para su base de datos y usar un objeto SQLiteOpenHelper
en cada uno de ellos (en open()
, usaría sqliteopenhelperObj.getWriteableDatabase()
y en close()
usaría sqliteopenhelperObj.close()
.
http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#close
Editar:
- Si ha descargado archivos a su dispositivo durante el proceso de prueba de una aplicación y desea eliminarlos, puede usar el Monitor de dispositivo en Android Studio https://developer.android.com/tools/help/monitor.html Hay un administrador de archivos que le permitirá ver y editar archivos en sus dispositivos. También puede hacer esto en la línea de comandos con el ADB (Android Debug Bridge) https://developer.android.com/tools/help/adb.html
Tengo dos preguntas principales.
- La base de datos no se eliminará cuando desinstale la aplicación.
- Los archivos descargados no se eliminarán mientras la aplicación sea inestable.
Hay una base de datos en mi aplicación de Android. Lo creo por java
class as follows.
public DataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase db) {
// creating required tables
db.execSQL(CREATE_TABLE_QUOTES);
db.execSQL(CREATE_TABLE_FILTERS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// on upgrade drop older tables
db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUOTES);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUOTES);
// create new tables
onCreate(db);
}
No hay una ruta específica definida en el código para la base de datos.
Este es el código de cómo descargo archivos. Y hay una ruta específica, pero no está permitido crear una carpeta en Android> datos> com.myapp también.
public String downloadImage(String img_url, int i) {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/fog/images/filters");
// Make sure the Pictures directory exists.
dir.mkdirs();
File destinationFile = new File(dir, "filter"+i);
String filepath = null;
try{
URL url = new URL("http://fog.wrapper.io/uploads/category/"+img_url+".png");
HttpURLConnection conection = (HttpURLConnection)url.openConnection();
conection.setRequestMethod("GET");
conection.setRequestProperty("Content-length", "0");
conection.setUseCaches(false);
conection.setAllowUserInteraction(false);
conection.connect();
int status = conection.getResponseCode();
switch (status) {
case 200:
case 201:
FileOutputStream fileOutput = new FileOutputStream(destinationFile);
InputStream inputStream = conection.getInputStream();
int totalSize = conection.getContentLength();
int downloadedSize = 0;
byte[] buffer = new byte[1024];
int bufferLength = 0;
while ( (bufferLength = inputStream.read(buffer)) > 0 )
{
fileOutput.write(buffer, 0, bufferLength);
downloadedSize += bufferLength; Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ;
}
fileOutput.close();
if(downloadedSize==totalSize) filepath = destinationFile.getPath();
Log.i("filepath:"," "+filepath) ;
return filepath;
}
} catch (IOException e) {
Log.d("ImageManager", "Error: " + e);
}
return null;
}
} // Get filters
Por favor, ayúdame. Perdón por el mal inglés.
En Android 6.0, Google agregó una nueva característica llamada Copia de seguridad automática.
cuando esta opción está activada (la opción predeterminada está activada), el sistema Android copia casi todos los directorios y archivos creados por el sistema, y los carga en la cuenta de Google Drive del usuario.
Cuando el usuario vuelve a instalar la aplicación, android automáticamente restaura los datos de la aplicación, sin importar cómo se instaló (a través de Play store, adb install, configuración inicial del dispositivo).
La operación de restauración se produce después de que se instale el APK, pero antes de que la aplicación esté disponible para que la inicie el usuario.
Página de desarrolladores de Android: https://developer.android.com/guide/topics/data/autobackup.html
La copia de seguridad automática se puede desactivar configurando android:allowBackup="false"
en AndroidManifest.xml
Recorrí esta pregunta cuando buscaba una solución para un problema similar relacionado con GreenDao: respuesta un poco más profunda aquí, pero básicamente si está en la api 23, deberá configurar allowBackup en false para poder depender de las bases de datos. se borra al desinstalar
https://.com/a/43046256/5298819