To jest podstawowy kod przywracania działającej bazy danych (z if (dbfile
.. w try
).
private static final int BUFFERSZ = 32768;
private byte[] buffer = new byte[BUFFERSZ];
........
dbfile = new File(currentdbfilename);
.......
if (dbfile.delete()) {
origdeleted = true;
}
FileInputStream bkp = new FileInputStream(backupfilename);
OutputStream restore = new FileOutputStream(currentdbfilename);
copylength = 0;
while ((copylength = bkp.read(buffer)) > 0) {
restore.write(buffer, 0, copylength);
}
restore.flush();
restore.close();
restoredone = true;
bkp.close();
Główne różnice polegają na tym, że usuwam plik DB i używam zapisów, a nie transferów. Później i po pomyślnym przywróceniu używam również następujących opcji, aby ponownie uruchomić aplikację (może być przesadą, ale dla mnie działa), ponieważ możesz uzyskać nieprzewidywalne wyniki (myślę, że dostęp do części oryginalnej bazy danych można uzyskać z pamięci / danych z pamięci podręcznej):-
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(i);
System.exit(0);