diff options
Diffstat (limited to 'main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java')
| -rw-r--r-- | main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java | 45 |
1 files changed, 20 insertions, 25 deletions
diff --git a/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java b/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java index 24f375d..b291a8a 100644 --- a/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java +++ b/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java @@ -1,8 +1,8 @@ package cgeo.geocaching.utils; +import cgeo.geocaching.DataStore; import cgeo.geocaching.MainActivity; import cgeo.geocaching.R; -import cgeo.geocaching.cgData; import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.ui.Formatter; @@ -12,8 +12,6 @@ import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.res.Resources; -import android.os.Handler; -import android.os.Message; import java.io.File; import java.util.concurrent.atomic.AtomicBoolean; @@ -34,34 +32,31 @@ public class DatabaseBackupUtils { final Resources res = activity.getResources(); final ProgressDialog dialog = ProgressDialog.show(activity, res.getString(R.string.init_backup_restore), res.getString(R.string.init_restore_running), true, false); final AtomicBoolean restoreSuccessful = new AtomicBoolean(false); - Thread restoreThread = new Thread() { - final Handler handler = new Handler() { - @Override - public void handleMessage(Message msg) { - dialog.dismiss(); - boolean restored = restoreSuccessful.get(); - String message = restored ? res.getString(R.string.init_restore_success) : res.getString(R.string.init_restore_failed); - ActivityMixin.helpDialog(activity, res.getString(R.string.init_backup_restore), message); - if (activity instanceof MainActivity) { - ((MainActivity) activity).updateCacheCounter(); - } - } - }; - + new Thread() { @Override public void run() { - restoreSuccessful.set(cgData.restoreDatabaseInternal()); - handler.sendMessage(handler.obtainMessage()); + restoreSuccessful.set(DataStore.restoreDatabaseInternal()); + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + dialog.dismiss(); + boolean restored = restoreSuccessful.get(); + String message = restored ? res.getString(R.string.init_restore_success) : res.getString(R.string.init_restore_failed); + ActivityMixin.helpDialog(activity, res.getString(R.string.init_backup_restore), message); + if (activity instanceof MainActivity) { + ((MainActivity) activity).updateCacheCounter(); + } + } + }); } - }; - restoreThread.start(); + }.start(); } public static boolean createBackup(final Activity activity, final Runnable runAfterwards) { final Context context = activity; // avoid overwriting an existing backup with an empty database // (can happen directly after reinstalling the app) - if (cgData.getAllCachesCount() == 0) { + if (DataStore.getAllCachesCount() == 0) { ActivityMixin.helpDialog(activity, context.getString(R.string.init_backup), context.getString(R.string.init_backup_unnecessary)); @@ -74,7 +69,7 @@ public class DatabaseBackupUtils { new Thread() { @Override public void run() { - final String backupFileName = cgData.backupDatabaseInternal(); + final String backupFileName = DataStore.backupDatabaseInternal(); activity.runOnUiThread(new Runnable() { @Override public void run() { @@ -96,8 +91,8 @@ public class DatabaseBackupUtils { } public static File getRestoreFile() { - final File fileSourceFile = cgData.getBackupFileInternal(); - return fileSourceFile.exists() ? fileSourceFile : null; + final File fileSourceFile = DataStore.getBackupFileInternal(); + return fileSourceFile.exists() && fileSourceFile.length() > 0 ? fileSourceFile : null; } public static boolean hasBackup() { |
