详情参考 某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. ImageLoader: java.io.FileNotFoundException: /storage/sdcard0
  2. android下giflib
  3. android 通用的功能集锦
  4. android之NDK(jni)开发笔记1——运行第一个NDK程序
  5. 实用技术经验分享:《Android账户同步备份框架》| 盛大乐众ROM 郭
  6. android车载娱乐系统跟android平板的分析比较
  7. Android获取SD卡路径/内存的几种方法
  8. Android的备份服务概述
  9. 【幻灯片分享】Android账户同步备份框架 | 盛大乐众ROM 郭振 | A

随机推荐

  1. Android实现XML解析技术
  2. 从 Windows 到 Android: 威胁的持续迁移
  3. Simple Guide for Porting Android Kerne
  4. Android(安卓)View绘制流程
  5. android 实战 AppCompat实现Action Bar
  6. Android入门教程四十二之GridView(网格视
  7. 7、Android中Bundle类的作用
  8. android TabHost 例子
  9. android junit (一)
  10. 自定义控件之View原理与使用