6
การสำรอง / กู้คืน Android: จะสำรองฐานข้อมูลภายในได้อย่างไร?
ฉันได้ใช้งานBackupAgentHelperโดยใช้ข้อมูลที่ให้มาFileBackupHelperเพื่อสำรองและกู้คืนฐานข้อมูลดั้งเดิมที่ฉันมี นี่คือฐานข้อมูลที่คุณมักจะใช้ร่วมกับContentProvidersและที่อยู่ใน/data/data/yourpackage/databases/และที่อาศัยอยู่ใน ใครจะคิดว่านี่เป็นกรณีทั่วไป แต่เอกสารยังไม่ชัดเจนว่าจะทำอย่างไร: http://developer.android.com/guide/topics/data/backup.html ไม่มีBackupHelperเฉพาะสำหรับฐานข้อมูลทั่วไปเหล่านี้ ดังนั้นฉันจึงใช้FileBackupHelperมันชี้ไปที่ไฟล์. db ของฉันใน " /databases/" แนะนำการล็อกรอบ ๆ การดำเนินการ db ใด ๆ (เช่นdb.insert) ในของฉันContentProvidersและลองสร้าง/databases/ไดเร็กทอรี "" มาก่อนonRestore()เนื่องจากไม่มีอยู่หลังจากติดตั้ง ฉันได้ใช้โซลูชันที่คล้ายกันสำหรับSharedPreferencesความสำเร็จในแอปอื่นในอดีต อย่างไรก็ตามเมื่อฉันทดสอบการใช้งานใหม่ของฉันในโปรแกรมจำลอง -2.2 ฉันเห็นว่ามีการสำรองข้อมูลLocalTransportจากบันทึกรวมถึงการกู้คืนที่ดำเนินการอยู่ (และonRestore()เรียก) กระนั้นก็ไม่เคยสร้างไฟล์ db ขึ้นมาเอง โปรดทราบว่าทั้งหมดนี้เกิดขึ้นหลังจากการติดตั้งและก่อนการเปิดตัวแอปครั้งแรกหลังจากทำการกู้คืนแล้ว นอกเหนือจากที่กลยุทธ์การทดสอบของฉันอยู่บนพื้นฐานของhttp://developer.android.com/guide/topics/data/backup.html#Testing โปรดทราบว่าฉันไม่ได้พูดถึงฐานข้อมูล sqlite ที่ฉันจัดการเองหรือสำรองข้อมูลไปยัง SDcard เซิร์ฟเวอร์ของตัวเองหรือที่อื่น ฉันเห็นการกล่าวถึงในเอกสารเกี่ยวกับฐานข้อมูลที่แนะนำให้ใช้แบบกำหนดเองBackupAgentแต่ดูเหมือนจะไม่เกี่ยวข้อง: อย่างไรก็ตามคุณอาจต้องการขยาย BackupAgent โดยตรงหากคุณต้องการ: * สำรองข้อมูลในฐานข้อมูล หากคุณมีฐานข้อมูล SQLite ที่คุณต้องการกู้คืนเมื่อผู้ใช้ติดตั้งแอปพลิเคชันของคุณใหม่คุณต้องสร้าง BackupAgent แบบกำหนดเองที่อ่านข้อมูลที่เหมาะสมระหว่างการสำรองข้อมูลจากนั้นสร้างตารางของคุณและแทรกข้อมูลระหว่างการดำเนินการกู้คืน กรุณาแจ้งความชัดเจน ถ้าฉันจำเป็นต้องทำเองจนถึงระดับ SQL …