Ini adalah kode inti dari pemulihan DB yang berfungsi (dari if (dbfile
.. dalam 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();
Perbedaan utamanya adalah saya menghapus file DB dan menggunakan penulisan daripada transfer. Kemudian dan setelah pemulihan yang berhasil, saya juga menggunakan yang berikut untuk memulai ulang Aplikasi (mungkin berlebihan tetapi berhasil untuk saya) karena Anda bisa mendapatkan hasil yang tidak terduga (saya pikir bagian dari basis data asli dapat diakses dari memori/data yang di-cache):-
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(i);
System.exit(0);