ฉันจะพยายามตอบคำถามของคุณทั้งหมดโดยตอบคำถามที่มีขนาดใหญ่กว่า: ฉันจะซิงค์ข้อมูลระหว่างเว็บเซิร์ฟเวอร์และแอป android ได้อย่างไร
การซิงค์ข้อมูลระหว่างเว็บเซิร์ฟเวอร์ของคุณกับแอพ Android นั้นต้องการส่วนประกอบที่แตกต่างกันสองอย่างในอุปกรณ์ Android
ที่เก็บถาวร:
นี่คือวิธีที่โทรศัพท์ของคุณจัดเก็บข้อมูลที่ได้รับจริงจากเว็บเซิร์ฟเวอร์ วิธีหนึ่งที่เป็นไปได้สำหรับการทำให้สำเร็จคือการเขียนContentProvider ที่คุณกำหนดเองซึ่งได้รับการสนับสนุนโดยฐานข้อมูล Sqlite บทแนะนำที่ดีสำหรับผู้ให้บริการเนื้อหาสามารถดูได้ที่นี่: http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/
ContentProviderกำหนดอินเตอร์เฟซที่สอดคล้องกันในการโต้ตอบกับข้อมูลที่จัดเก็บของคุณ นอกจากนี้ยังอาจอนุญาตให้แอปพลิเคชันอื่นโต้ตอบกับข้อมูลของคุณได้หากคุณต้องการ เบื้องหลังContentProviderของคุณอาจเป็นฐานข้อมูล Sqlite, Cache หรือกลไกการจัดเก็บข้อมูลตามอำเภอใจ
ในขณะที่ฉันอยากจะแนะนำให้ใช้ContentProviderกับฐานข้อมูล Sqlite คุณสามารถใช้กลไกการจัดเก็บตามจาวาที่คุณต้องการ
รูปแบบการแลกเปลี่ยนข้อมูล:
นี่คือรูปแบบที่คุณใช้ในการส่งข้อมูลระหว่างเว็บเซิร์ฟเวอร์และแอพ Android ของคุณ สองรูปแบบที่ได้รับความนิยมสูงสุดในวันนี้คือ XML และ JSON เมื่อเลือกรูปแบบของคุณคุณควรคิดถึงไลบรารีการทำให้เป็นอนุกรมที่มีอยู่ ฉันรู้ว่ามีห้องสมุดที่ยอดเยี่ยมสำหรับการทำให้เป็นอนุกรม json เรียกว่า gson: https://github.com/google/gsonแม้ว่าฉันจะแน่ใจว่ามีไลบรารีที่คล้ายกันสำหรับ XML
บริการซิงโครไนซ์
คุณจะต้องการงานอะซิงโครนัสบางประเภทที่สามารถรับข้อมูลใหม่จากเซิร์ฟเวอร์ของคุณและรีเฟรชเนื้อหามือถือเพื่อแสดงเนื้อหาของเซิร์ฟเวอร์ นอกจากนี้คุณจะต้องแจ้งเตือนเซิร์ฟเวอร์เมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงเนื้อหาในเครื่องและต้องการแสดงการเปลี่ยนแปลงเหล่านั้น Android ให้รูปแบบSyncAdapterเป็นวิธีการแก้รูปแบบนี้ได้อย่างง่ายดาย คุณจะต้องลงทะเบียนบัญชีผู้ใช้จากนั้น Android จะเล่นเวทมนต์ให้คุณมากมายและอนุญาตให้คุณทำการซิงค์โดยอัตโนมัติ นี่คือบทแนะนำที่ดี: http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/
สำหรับวิธีที่คุณระบุว่าบันทึกนั้นเหมือนกันหรือไม่โดยทั่วไปคุณจะสร้างรายการที่มีรหัสเฉพาะที่คุณเก็บไว้ทั้งบนอุปกรณ์ android และเซิร์ฟเวอร์ คุณสามารถใช้สิ่งนั้นเพื่อให้แน่ใจว่าคุณกำลังอ้างถึงข้อมูลอ้างอิงเดียวกัน นอกจากนี้คุณสามารถจัดเก็บแอตทริบิวต์คอลัมน์เช่น "updated_at" เพื่อให้แน่ใจว่าคุณได้รับข้อมูลใหม่ล่าสุดเสมอหรือคุณไม่ได้เขียนทับข้อมูลที่เขียนใหม่โดยไม่ได้ตั้งใจ