首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

数据库转移到sd卡AsyncTask,ProgressDialog应用

2012-09-01 
数据库转移到sd卡AsyncTask,ProgressDialog使用private class ExportDatabaseFileTask extends AsyncTask

数据库转移到sd卡AsyncTask,ProgressDialog使用

private class ExportDatabaseFileTask extends AsyncTask<String, Void, Boolean> {?
? ? ? ? private final ProgressDialog dialog = new ProgressDialog(ctx);?
?
? ? ? ? // can use UI thread here?
? ? ? ? protected void onPreExecute() {?
? ? ? ? ? ?this.dialog.setMessage("Exporting database...");?
? ? ? ? ? ?this.dialog.show();?
? ? ? ? }?
?
? ? ? ? // automatically done on worker thread (separate from UI thread)?
? ? ? ? protected Boolean doInBackground(final String... args) {?
?
? ? ? ? ? ?File dbFile =?
? ? ? ? ? ? ? ? ? ? new File(Environment.getDataDirectory() + "/data/com.mypkg/databases/mydbfile.db");?
?
? ? ? ? ? ?File exportDir = new File(Environment.getExternalStorageDirectory(), "");?
? ? ? ? ? ?if (!exportDir.exists()) {?
? ? ? ? ? ? ? exportDir.mkdirs();?
? ? ? ? ? ?}?
? ? ? ? ? ?File file = new File(exportDir, dbFile.getName());?
?
? ? ? ? ? ?try {?
? ? ? ? ? ? ? file.createNewFile();?
? ? ? ? ? ? ? this.copyFile(dbFile, file);?
? ? ? ? ? ? ? return true;?
? ? ? ? ? ?} catch (IOException e) {?
? ? ? ? ? ? ? Log.e("mypck", e.getMessage(), e);?
? ? ? ? ? ? ? return false;?
? ? ? ? ? ?}?
? ? ? ? }?
?
? ? ? ? // can use UI thread here?
? ? ? ? protected void onPostExecute(final Boolean success) {?
? ? ? ? ? ?if (this.dialog.isShowing()) {?
? ? ? ? ? ? ? this.dialog.dismiss();?
? ? ? ? ? ?}?
? ? ? ? ? ?if (success) {?
? ? ? ? ? ? ? Toast.makeText(ctx, "Export successful!", Toast.LENGTH_SHORT).show();?
? ? ? ? ? ?} else {?
? ? ? ? ? ? ? Toast.makeText(ctx, "Export failed", Toast.LENGTH_SHORT).show();?
? ? ? ? ? ?}?
? ? ? ? }?
?
? ? ? ? void copyFile(File src, File dst) throws IOException {?
? ? ? ? ? ?FileChannel inChannel = new FileInputStream(src).getChannel();?
? ? ? ? ? ?FileChannel outChannel = new FileOutputStream(dst).getChannel();?
? ? ? ? ? ?try {?
? ? ? ? ? ? ? inChannel.transferTo(0, inChannel.size(), outChannel);?
? ? ? ? ? ?} finally {?
? ? ? ? ? ? ? if (inChannel != null)?
? ? ? ? ? ? ? ? ?inChannel.close();?
? ? ? ? ? ? ? if (outChannel != null)?
? ? ? ? ? ? ? ? ?outChannel.close();?
? ? ? ? ? ?}?
? ? ? ? }?
?
? ? ?}?

热点排行