android数据库备份还原
详情参考 某android平板项目开发笔记---计划任务备份http://www.zzzyk.com/kf/201204/128614.html
新建一个类继承 AsyncTask
public class BackupTask extends AsyncTask<String, Void, Integer> {
private static final String COMMAND_BACKUP = "backupDatabase";
public static final String COMMAND_RESTORE = "restroeDatabase";
private static final int BACKUP_SUCCESS = 1;
public static final int RESTORE_SUCCESS = 2;
private static final int BACKUP_ERROR = 3;
public static final int RESTORE_NOFLEERROR = 4;
private Context mContext;
public BackupTask(Context context) {
this.mContext = context;
}
@Override
protected Integer doInBackground(String... params) {
// TODO Auto-generated method stub
File dbFile = mContext.getDatabasePath("db_dlion.db"); // 获得数据库路径,默认是/data/data/(包名)org.dlion/databases/
File exportDir = new File(Environment.getExternalStorageDirectory(),
"dbBackup");
if (!exportDir.exists()) {
exportDir.mkdirs();
}
File backup = new File(exportDir, dbFile.getName());
String command = params[0];
if (command.equals(COMMAND_BACKUP)) {
try {
backup.createNewFile();
fileCopy(dbFile, backup);
return BACKUP_SUCCESS;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return BACKUP_ERROR;
}
} else if (command.equals(COMMAND_RESTORE)) {
try {
fileCopy(backup, dbFile);
return RESTORE_SUCCESS;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return RESTORE_NOFLEERROR;
}
} else {
return BACKUP_ERROR;
}
}
private void fileCopy(File dbFile, File backup) throws IOException {
// TODO Auto-generated method stub
FileChannel inChannel = new FileInputStream(dbFile).getChannel();
FileChannel outChannel = new FileOutputStream(backup).getChannel();
try {
inChannel.transferTo(0, inChannel.size(), outChannel);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (inChannel != null) {
inChannel.close();
}
if (outChannel != null) {
outChannel.close();
}
}
}
protected void onPostExecute(Integer result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
switch (result) {
case BACKUP_SUCCESS:
Log.d("backup", "ok");
break;
case BACKUP_ERROR:
Log.d("backup", "fail");
break;
case RESTORE_SUCCESS:
Log.d("restore", "success");
break;
case RESTORE_NOFLEERROR:
Log.d("restore", "fail");
break;
default:
break;
}
}
}
在 mainActivity 里异步加载备份、还原:
// 数据恢复
private void dataRecover() {
// TODO Auto-generated method stub
new BackupTask(this).execute("restroeDatabase");
}
// 数据备份
private void dataBackup() {
// TODO Auto-generated method stub
new BackupTask(this).execute(&q
补充:移动开发 , Android ,