Data Backup trong Android




Android cho phép bạn 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à SharedPreferencesBackupHelperFileBackupHelper.

Để sử dụng SharedPreferencesBackupHelper, bạn cần khởi tạo đố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à: −

Stt Phươ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:

Stt Phươ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: −

Data Backup trong Android

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à:−

Data Backup trong Android

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ả:

Loading...
Loading...

Follow https://www.facebook.com/vietjackteam/ để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.