Android cho phép các bạn học lập trình android sao lưu (Backup) dữ liệu ứng dụng của mình tới Remote Storage (kho lưu giữ từ xa) để cung cấp một điểm lưu giữ cho dữ liệu ứng dụng và các thiết lập. Bạn chỉ có thể sao lưu dữ liệu ứng dụng.
Để tạo một ứng dụng sao lưu dữ liệu (Data Backup), bạn cần đăng ký ứng dụng với Google Backup Service. Điều này sẽ được giải thích trong ví dụ. Sau khi đăng ký, bạn phải xác định key của nó trong AndroidManifest.XML.
<application android:allowBackup="true" android:backupAgent="MyBackupPlace"> <meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIErlxFByGgNz2ywBeQb6TsmLpp5Ksh1PW-ZSexg" /> </application>
Android cung cấp lớp BackUpAgentHelper để xử lý tất cả các hoạt động về sao lưu dữ liệu. Để sử dụng lớp này, bạn phải kế thừa lớp của bạn với lớp đó. Cú pháp là:
public class MyBackUpPlace extends BackupAgentHelper { }
The persistent data that you want to backup is in either of the two forms. Either it could be SharedPrefrences or it could be File. Android supports both types of backup in the respective classes ofDữ liệu mà bạn muốn sao lưu là trong một hoặc hai dạng: Nó có thể là SharedPrefrences hoặc nó có thể là File. Android hỗ trợ cả hai kiểu sao lưu với các lớp tương ứng là SharedPreferencesBackupHelpervà FileBackupHelper.
Để sử dụng SharedPreferencesBackupHelper, bạn cần thuyết minh đối tượng của nó với tên của SharedPreferences file của bạn. Cú pháp như sau: −
static final String File_Name_Of_Prefrences = "myPrefrences"; SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, File_Name_Of_Prefrences);
Việc cuối cùng bạn cần làm là gọi phương thức addHelper() bởi xác định chuỗi Backup key và đối tượng Helper. Cú pháp như sau: −
addHelper(PREFS_BACKUP_KEY, helper);
Phương thức addHelper() sẽ tự động thêm một Helper tới một tập con dữ liệu đã cho để cấu hình Agent.
Ngoài ra, lớp BackupAgentHelper còn định nghĩa một số phương thức khác, đó là: −
SttPhương thức & Miêu tả
1 onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)
Trả về tiến trình sao lưu trên mỗi Handler đã được cấu hình
2 onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)
Chạy tiến trình restore trên mỗi Handler đã được cấu hình
Lớp SharedPreferencesBackupHelper cũng cung cấp một số phương thức sau:
SttPhương thức & Miêu tả
1 performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)
Sao lưu nhóm SharedPreferences đã được cấu hình
2 restoreEntity(BackupDataInputStream data)
Restore một thực thể từ Data Stream tới file lưu giữ thích hợp của nó
Ví dụ
Ví dụ sau minh họa sự sử dụng của lớp BackupAgentHelper để sao lưu dữ liệu.
Để thử nghiệm ví dụ, bạn cần chạy trên một thiết bị thực sự hoặc trong một Emulator.
Đăng ký ứng dụng Android với Google Backup Service. Để làm điều này, bạn theo link sau.. You must agree to the terms of service, and then enter the application package name. It is shown belowBạn phải đồng ý các khoản mục của dịch vụ, và sau đó nhận tên gói ứng dụng. Giống như sau: −
Sau đó nhấn vào Register with Android Backup Service. Nó sẽ cung cấp cho bạn key cùng với AndroidManifest code để sao chép. Sao chép key đó. Hình minh họa là:−
Sau khi bạn sao chép key, bạn cần ghi nó trong AndroidManifest.XML file. Code của nó như sau: −
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.backup" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:backupAgent="MyBackUpPlace" android:theme="@style/AppTheme" > <activity android:name="com.example.backup.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIErlxFByGgNz2ywBeQb6TsmLpp5Ksh1PW-ZSexg" /> </application> </manifest>
Đây là code của lớp BackupAgentHelper. Tên của lớp nên giống như tên bạn đã xác định trong thẻ backupAgent dưới ứng dụng trong AndroidManifest.XML.
package com.example.backup; import android.app.backup.BackupAgentHelper; import android.app.backup.SharedPreferencesBackupHelper; public class MyBackUpPlace extends BackupAgentHelper { static final String File_Name_Of_Prefrences = "myPrefrences"; static final String PREFS_BACKUP_KEY = "backup"; @Override public void onCreate() { SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, File_Name_Of_Prefrences); addHelper(PREFS_BACKUP_KEY, helper); } }
Kiểm tra BackupAgent của bạn
Khi bạn đã triển khai Backup Agent, bạn có thể kiểm tra tính năng backup và restore với thủ tục như sau, sử dụng bmgr.
Cài đặt ứng dụng trên một hệ thống Android phù hợp
Nếu sử dụng Emulator, tạo và sử dụng một AVD với Android 2.2 (API level 8).
Nếu sử dụng một thiết bị, thì thiết bị phải đang chạy Android 2.2 hoặc cao hơn và đã có sẵn Google Play.
Bảo đảm dữ liệu sao lưu là enable
Nếu sử dụng Emulator, bạn có thể kích hoạt backup với lệnh sau từ SDK tools/path: −
adb shell bmgr enable true
Nếu sử dụng một thiết bị, mở Settings, chọn Privacy, sau đó enable Backup my data and Automatic restore.
Thực hiện sao lưu
Cho mục đích thử nghiệm, bạn có thể tạo một yêu cầu với lệnh bmgr như sau: −
adb shell bmgr backup your.package.name
Khởi tạo một hoạt động backup bởi soạn lệnh sau:
adb shell bmgr run
Lệnh này bắt Backup Manager thực hiện tất cả yêu cầu sao lưu đã xếp trong hàng của nó
Uninstall và Reinstall ứng dụng
Bạn có thể uninstall ứng dụng với lệnh sau: −
adb uninstall your.package.name
Sau đó reinstall ứng dụng và kiểm tra kết quả:
0 nhận xét:
Đăng nhận xét