20.11.2016 Views

ANDROID APP

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

296 บทที่ 11 เทคนิคขั้นสูงสำาหรับพัฒนาแอพบนแอนดรอยด์<br />

ในกรณีที่เวอร์ชั่นของแอพไม่ตรงกัน และอาจมีชนิดของข้อมูลไม่ตรงกันนั้น คำสั่ง onRestore()<br />

จะแปลงข้อมูลให้โดยอัตโนมัติ ซึ่งเป็นเหตุผลที่ BackupManager จะต้องทำงานร่วมกับ<br />

appVersionCode หลังจากที่กู้ข้อมูลแล้ว สถานะของแอพก็จะเปลี่ยนไป และค่าของ newState ก็จะ<br />

ถูกอัพเดต<br />

กรรมวิธี: การสำรองข้อมูลไปไว้ที่คลาวด์<br />

BackupAgent ใช้ในการจัดเก็บข้อมูลของแอพในระหว่างที่แอพกำลังทำงาน สำหรับการจัดเก็บ<br />

ข้อมูลในรูปแบบไฟล์ เราจะใช้คำสั่ง BackupAgentHelper แทน ซึ่งคำสั่งนี้จะทำงานร่วมกับคลาส<br />

BackupAgent ที่รองรับการสำรองข้อมูล 2 ประเภทคือ<br />

m SharedPreferencesBackupHelper ใช้ในการสำรองข้อมูลไฟล์ SharedPreferences<br />

m FileBackupHelper ใช้ในการสร้างไฟล์ข้อมูลสำรอง<br />

ชุดคำสั่งที่ 11.12 ตัวอย่างของการใช้คำสั่ง BackupAgentHelper<br />

public class MyFileBackupAgentHelper extends BackupAgentHelper {<br />

@Override<br />

public void onCreate() {<br />

FileBackupHelper filehelper = new FileBackupHelper(this,<br />

DATA_FILE_NAME);<br />

addHelper(FILE_HELPER_KEY, helper);<br />

SharedPreferencesBackupHelper xmlhelper<br />

= new SharedPreferencesBackupHelper(this, PREFS);<br />

addHelper(PREFS_BACKUP_KEY, helper);<br />

}<br />

}<br />

BackupAgent ทุกตัวจะต้องเรียกใช้เมธอด onCreate() ซึ่ง BackupAgent สามารถมี<br />

BackupHelper ได้หลายตัว การสร้างอินสแตนซ์ของคลาส BackupAgentHelper ไม่จำเป็นต้อง<br />

โอเวอร์ไรด์เมธอด onBackup และ onRestore เพราะว่าการทำงานทั้งหมดถูกควบคุมโดย<br />

BackupAgent อยู่แล้ว<br />

กรรมวิธี: การสั่งให้สำรองและกู้คืนข้อมูล<br />

เราจะต้องกำหนดการสั่งให้แก่ BackupManager เพื่อให้สั่งสำรองและกู้คืนข้อมูลได้ ด้วยการ<br />

เพิ่มแอททริบิวต์ android:backupAgent ลงไปในไฟล์ Manifest ดังแสดงในชุดคำสั่งที่ 11.13 ดังนี้<br />

ชุดคำสั่งที่ 11.13 AndroidManifest.xml<br />

<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!