详情参考 某android平板项目开发笔记---计划任务备份

新建一个类继承 AsyncTask

public class BackupTask extends AsyncTask<String, Void, Integer> {    private static final String COMMAND_BACKUP = "backupDatabase";    public static final String COMMAND_RESTORE = "restroeDatabase";    private Context mContext;    public BackupTask(Context context) {        this.mContext = context;    }    @Override    protected Integer doInBackground(String... params) {        // TODO Auto-generated method stub
// 获得正在使用的数据库路径,我的是 sdcard 目录下的 /dlion/db_dlion.db
     // 默认路径是 /data/data/(包名)/databases/*.db
File dbFile = mContext.getDatabasePath(Environment .getExternalStorageDirectory().getAbsolutePath() + "/dlion/db_dlion.db"); File exportDir = new File(Environment.getExternalStorageDirectory(), "dlionBackup"); 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 Log.d("backup", "ok"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return Log.d("backup", "fail"); } } else if (command.equals(COMMAND_RESTORE)) { try { fileCopy(backup, dbFile); return Log.d("restore", "success"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return Log.d("restore", "fail"); } } else { return null; } } 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(); } } }}

在 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("backupDatabase");    }
注:文章系本人原创:发布于

更多相关文章

  1. Android元素定位
  2. 分享:Android开发半月谈
  3. Android判断是否是平板
  4. Android绘图之Path(3)
  5. Vagrant方式配置Laravel环境至非C盘路径
  6. WebStorm 配合 Cmder 或 Git Bash
  7. ROS2中使用Gtes示例
  8. HTML 练习
  9. java获取文件路径

随机推荐

  1. android 4.0 browser useragent debug
  2. android p 4G LTE 默认关闭修改
  3. 全栈之路——android搭配Django
  4. 安卓添加全局字体tff
  5. 如何关闭android studio3.0的自动保存功
  6. Web Console﹕ Uncaught Error: Error call
  7. android点滴3
  8. Android仿QQ滑动弹出菜单标记已读、未读
  9. Android网络电话软件Sipdroid试用
  10. Android公共库(缓存 下拉ListView 下载管