Android - การสำรองข้อมูล

Android อนุญาตให้คุณสำรองข้อมูลแอปพลิเคชันของคุณไปยังที่เก็บข้อมูล "คลาวด์" ระยะไกลเพื่อให้เป็นจุดคืนค่าสำหรับข้อมูลแอปพลิเคชันและการตั้งค่า คุณสามารถสำรองข้อมูลแอปพลิเคชันของคุณได้เท่านั้น ในการเข้าถึงข้อมูลแอปพลิเคชันอื่น ๆ คุณต้องรูทโทรศัพท์ของคุณ

ในการสร้างแอปพลิเคชันสำรองข้อมูลคุณต้องลงทะเบียนแอปพลิเคชันของคุณกับบริการสำรองข้อมูลของ Google สิ่งนี้ได้อธิบายไว้ในตัวอย่าง หลังจากลงทะเบียนคุณต้องระบุรหัสใน 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 ให้ BackUpAgentHelperคลาสเพื่อจัดการการดำเนินการทั้งหมดของการสำรองข้อมูล ในการใช้คลาสนี้คุณต้องขยายชั้นเรียนของคุณด้วย ไวยากรณ์ได้รับด้านล่าง -

public class MyBackUpPlace extends BackupAgentHelper {
}

ข้อมูลถาวรที่คุณต้องการสำรองข้อมูลอยู่ในสองรูปแบบ อาจเป็น SharedPrefrences หรืออาจเป็นไฟล์ Android รองรับการสำรองข้อมูลทั้งสองประเภทในคลาสที่เกี่ยวข้องSharedPreferencesBackupHelper และ FileBackupHelper.

เพื่อที่จะใช้ SharedPerefernceBackupHelperคุณต้องสร้างอินสแตนซ์วัตถุด้วยชื่อของไฟล์ sharedPerefernces ของคุณ ไวยากรณ์ได้รับด้านล่าง -

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

สิ่งสุดท้ายที่คุณต้องทำคือเรียกเมธอด addHelper โดยระบุสตริงคีย์สำรองและอ็อบเจ็กต์ตัวช่วย ไวยากรณ์ได้รับด้านล่าง -

addHelper(PREFS_BACKUP_KEY, helper);

เมธอด addHelper จะเพิ่มตัวช่วยให้กับชุดข้อมูลย่อยที่กำหนดให้กับคอนฟิกูเรชันของเอเจนต์โดยอัตโนมัติ

นอกเหนือจากวิธีการเหล่านี้แล้วยังมีวิธีการอื่น ๆ ที่กำหนดไว้ในคลาส BackupAgentHelper มีการกำหนดไว้ด้านล่าง -

ซีเนียร์ No วิธีการและคำอธิบาย
1

onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

รันกระบวนการสำรองข้อมูลบนตัวจัดการที่กำหนดค่าไว้แต่ละตัว

2

onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)

รันกระบวนการคืนค่าบนตัวจัดการที่กำหนดค่าไว้แต่ละตัว

วิธีการของคลาส SharedPreferencesBackUpHelper แสดงอยู่ด้านล่าง

ซีเนียร์ No วิธีการและคำอธิบาย
1

performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

สำรองข้อมูลกลุ่ม SharedPreferences ที่กำหนดค่าไว้

2

restoreEntity(BackupDataInputStream data)

กู้คืนเอนทิตีหนึ่งรายการจากสตรีมข้อมูลการกู้คืนไปยังที่เก็บไฟล์การกำหนดลักษณะที่แชร์

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้คลาส BackupAgentHelper เพื่อสร้างการสำรองข้อมูลแอปพลิเคชันของคุณ

ในการทดลองกับตัวอย่างนี้คุณต้องเรียกใช้สิ่งนี้บนอุปกรณ์จริงหรือในโปรแกรมจำลอง

ขั้นตอน คำอธิบาย
1 คุณจะใช้ Android studio เพื่อสร้างแอปพลิเคชัน Android และตั้งชื่อว่า Backup ภายใต้แพ็คเกจ com.example.backup
2 ลงทะเบียนแอปพลิเคชันของคุณด้วยบริการสำรองข้อมูลของ Google
3 แก้ไข AndroidManifest เพื่อเพิ่มคีย์ที่จำเป็นและส่วนประกอบอื่น ๆ
4 สร้างคลาสเอเจนต์สำรองด้วยชื่อที่คุณระบุที่ AndroidManifest.XML
5 เรียกใช้แอปพลิเคชันและตรวจสอบผลลัพธ์

ลงทะเบียนแอปพลิเคชัน Android ของคุณด้วยบริการสำรองข้อมูลของ Google ในการดำเนินการดังกล่าวโปรดไปที่ลิงก์นี้ คุณต้องยอมรับข้อกำหนดในการให้บริการจากนั้นป้อนชื่อแพ็กเกจแอปพลิเคชัน ดังแสดงด้านล่าง -

จากนั้นคลิกที่ลงทะเบียนด้วยบริการสำรองข้อมูล Android มันจะให้รหัสของคุณพร้อมกับรหัส AndroidManifest ที่จะคัดลอก เพียงแค่คัดลอกคีย์ ดังแสดงด้านล่าง -

เมื่อคุณคัดลอกคีย์คุณจะต้องเขียนลงในไฟล์ AndroidManifest.XML รหัสได้รับด้านล่าง -

<?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>

นี่คือรหัสของคลาส BackUpAgentHelper ชื่อของคลาสควรเหมือนกับที่คุณระบุไว้ในแท็ก backupAgent ภายใต้แอปพลิเคชันใน 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);
   }
}

ทดสอบ BackupAgent ของคุณ

เมื่อคุณติดตั้งตัวแทนสำรองของคุณแล้วคุณสามารถทดสอบการสำรองข้อมูลและเรียกคืนฟังก์ชันการทำงานด้วยขั้นตอนต่อไปนี้โดยใช้ bmgr

ติดตั้งแอปพลิเคชันของคุณบนอิมเมจระบบ Android ที่เหมาะสม

หากใช้โปรแกรมจำลองให้สร้างและใช้ AVD กับ Android 2.2 (API ระดับ 8)

หากใช้อุปกรณ์อุปกรณ์ต้องใช้ Android 2.2 ขึ้นไปและมี Google Play ในตัว

ตรวจสอบให้แน่ใจว่าเปิดใช้งานการสำรองข้อมูลแล้ว

หากใช้โปรแกรมจำลองคุณสามารถเปิดใช้งานการสำรองข้อมูลด้วยคำสั่งต่อไปนี้จากเครื่องมือ / เส้นทาง SDK ของคุณ -

adb shell bmgr enable true

หากใช้อุปกรณ์ให้เปิดการตั้งค่าระบบเลือกความเป็นส่วนตัวจากนั้นเปิดใช้งานสำรองข้อมูลของฉันและกู้คืนอัตโนมัติ

กำลังทำการสำรองข้อมูล

สำหรับวัตถุประสงค์ในการทดสอบคุณสามารถร้องขอด้วยคำสั่ง bmgr ต่อไปนี้ -

adb shell bmgr backup your.package.name

เริ่มต้นการดำเนินการสำรองข้อมูลโดยพิมพ์คำสั่งต่อไปนี้

adb shell bmgr run

สิ่งนี้บังคับให้ Backup Manager ดำเนินการร้องขอการสำรองข้อมูลทั้งหมดที่อยู่ในคิว

ถอนการติดตั้งและติดตั้งแอปพลิเคชันของคุณใหม่

ถอนการติดตั้งแอปพลิเคชันด้วยคำสั่งต่อไปนี้ -

adb uninstall your.package.name

จากนั้นติดตั้งแอปพลิเคชันใหม่และตรวจสอบผลลัพธ์