Android - Sao lưu dữ liệu

Android cho phép bạn sao lưu dữ liệu ứng dụng của mình vào bộ nhớ "đám mây" từ xa, nhằm cung cấp điểm khôi phục cho dữ liệu và cài đặt ứng dụng. Bạn chỉ có thể sao lưu dữ liệu ứng dụng của mình. Để truy cập dữ liệu ứng dụng khác, bạn cần root điện thoại của mình.

Để tạo một ứng dụng sao lưu dữ liệu, bạn cần đăng ký ứng dụng của mình với dịch vụ sao lưu của google. Điều này đã được giải thích trong ví dụ. Sau khi đăng ký, bạn phải chỉ định khóa 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 BackUpAgentHelperlớp để xử lý tất cả các hoạt động sao lưu dữ liệu. Để sử dụng lớp này, bạn phải mở rộng lớp của mình với nó. Cú pháp của nó được đưa ra dưới đây:

public class MyBackUpPlace extends BackupAgentHelper {
}

Dữ liệu liên tục mà bạn muốn sao lưu ở một trong hai dạng. Nó có thể là SharedPrefrences hoặc nó có thể là Tệp. Android hỗ trợ cả hai loại sao lưu trong các lớp tương ứng củaSharedPreferencesBackupHelperFileBackupHelper.

Để sử dụng SharedPerefernceBackupHelper, bạn cần khởi tạo đối tượng của nó bằng tên của Tệp sharedPerefernces của bạn. Cú pháp của nó được đưa ra dưới đây:

static final String File_Name_Of_Prefrences = "myPrefrences";
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, File_Name_Of_Prefrences);

Điều cuối cùng bạn cần làm là gọi phương thức addHelper bằng cách chỉ định chuỗi khóa dự phòng và đối tượng trợ giúp. Cú pháp của nó được đưa ra dưới đây:

addHelper(PREFS_BACKUP_KEY, helper);

Phương thức addHelper sẽ tự động thêm một trình trợ giúp vào một tập hợp con dữ liệu nhất định vào cấu hình của tác nhân.

Ngoài các phương thức này, còn có các phương thức khác được định nghĩa trong lớp BackupAgentHelper. Chúng được định nghĩa dưới đây -

Sr.No Phương pháp & mô tả
1

onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

Chạy quá trình sao lưu trên từng trình xử lý đã định cấu hình

2

onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)

Chạy quá trình khôi phục trên từng trình xử lý đã định cấu hình

Các phương thức của lớp SharedPreferencesBackUpHelper được liệt kê bên dưới.

Sr.No Phương pháp & mô tả
1

performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

Sao lưu các nhóm SharedPreferences đã định cấu hình

2

restoreEntity(BackupDataInputStream data)

Khôi phục một thực thể từ luồng dữ liệu khôi phục vào kho lưu trữ tệp tùy chọn chia sẻ thích hợp

Thí dụ

Ví dụ sau minh họa việc sử dụng lớp BackupAgentHelper để tạo bản sao lưu dữ liệu ứng dụng của bạn.

Để thử nghiệm với ví dụ này, bạn cần chạy điều này trên thiết bị thực tế hoặc trong trình giả lập.

Các bước Sự miêu tả
1 Bạn sẽ sử dụng Android studio để tạo một ứng dụng Android và đặt tên nó là Backup theo gói com.example.backup.
2 Đăng ký ứng dụng của bạn với dịch vụ sao lưu của Google.
3 Sửa đổi AndroidManifest để thêm khóa cần thiết tương ứng và các thành phần khác
4 Tạo lớp tác nhân dự phòng với tên bạn chỉ định tại AndroidManifest.XML
5 Chạy ứng dụng và xác minh kết quả

Đăng ký ứng dụng Android của bạn với dịch vụ sao lưu của google. Để làm điều đó, hãy truy cập liên kết này . Bạn phải đồng ý với các điều khoản dịch vụ, sau đó nhập tên gói ứng dụng. Nó được hiển thị bên dưới -

Sau đó bấm vào Đăng ký với dịch vụ sao lưu android. Nó sẽ cung cấp cho bạn khóa của bạn, cùng với mã AndroidManifest của bạn để sao chép. Chỉ cần sao chép chìa khóa. Nó được hiển thị bên dưới -

Sau khi sao chép khóa, bạn cần ghi khóa vào tệp AndroidManifest.XML của mình. Mã của nó được đưa ra dưới đây -

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.backup" >

   <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à mã của lớp BackUpAgentHelper. Tên của lớp phải giống với tên bạn đã chỉ định trong thẻ backupAgent trong ứ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 tác nhân sao lưu của mình, bạn có thể kiểm tra chức năng sao lưu và khôi phục bằng quy trình sau, sử dụng bmgr.

Cài đặt ứng dụng của bạn trên hình ảnh hệ thống Android phù hợp.

Nếu sử dụng trình giả lập, hãy tạo và sử dụng AVD với Android 2.2 (API Cấp 8).

Nếu sử dụng thiết bị, thiết bị phải chạy Android 2.2 trở lên và được tích hợp sẵn Google Play.

Đảm bảo sao lưu dữ liệu được bật

Nếu sử dụng trình giả lập, bạn có thể bật sao lưu bằng lệnh sau từ các công cụ / đường dẫn SDK của bạn -

adb shell bmgr enable true

Nếu sử dụng thiết bị, hãy mở Cài đặt hệ thống, chọn Quyền riêng tư, sau đó bật Sao lưu dữ liệu của tôi và Khôi phục tự động.

Thực hiện sao lưu

Đối với mục đích thử nghiệm, bạn cũng có thể đưa ra yêu cầu bằng lệnh bmgr sau:

adb shell bmgr backup your.package.name

Bắt đầu thao tác sao lưu bằng cách gõ lệnh sau.

adb shell bmgr run

Điều này buộc Trình quản lý sao lưu thực hiện tất cả các yêu cầu sao lưu có trong hàng đợi của nó.

Gỡ cài đặt và cài đặt lại ứng dụng của bạn

Gỡ cài đặt ứng dụng bằng lệnh sau:

adb uninstall your.package.name

Sau đó cài đặt lại ứng dụng và xác minh kết quả.