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
จากนั้นติดตั้งแอปพลิเคชันใหม่และตรวจสอบผลลัพธ์