1. ผู้ให้บริการเนื้อหาไม่ปลอดภัยต่อเธรด
โดยค่าเริ่มต้นผู้ให้บริการเนื้อหาไม่ปลอดภัยเธรด หากคุณมีหลายเธรดโดยใช้ผู้ให้บริการเนื้อหาคุณจะเห็นข้อยกเว้นต่างๆมากมายที่ถูกโยนทิ้งและข้อมูลอื่น ๆ ไม่สอดคล้องกัน วิธีที่ง่ายที่สุดในการแก้ไขปัญหานี้คือการใช้คีย์เวิร์ดที่ซิงโครไนซ์กับวิธีการสาธารณะแต่ละวิธีที่ผู้ให้บริการเนื้อหาเปิดเผย
ด้วยวิธีนี้จะมีเพียงหนึ่งเธรดเท่านั้นที่สามารถเข้าถึงวิธีการเหล่านี้ได้
2. เล่นให้ดีเมื่อเขียนเยอะ ๆ
ฉันมีความต้องการในแอปพลิเคชันแผนที่ Serval ใหม่เพื่อนำเข้าข้อมูลจากไฟล์ไบนารีไปยังฐานข้อมูลที่แอปพลิเคชันใช้ภายใน ในการดำเนินการนี้และเล่นได้ดีกับแอปพลิเคชันที่เหลือทางที่ดีที่สุดคือ:
วางไข่เธรดใหม่เพื่อดำเนินการนำเข้าเพื่อไม่ให้เธรดอื่นได้รับผลกระทบในทางลบโดยเฉพาะเธรดที่รับผิดชอบการอัปเดต UI และหยุดชั่วขณะในตอนท้ายของการนำเข้าแต่ละครั้งเพื่อให้เธรดอื่น ๆ ที่ต้องใช้วิธีการซิงโครไนซ์มีโอกาสมากขึ้น
3. ผู้ให้บริการเนื้อหาบังคับให้คุณคิดด้านข้างในบางครั้ง
วิธีการทำงานของผู้ให้บริการเนื้อหาใน Android คือการจัดเตรียมชั้นของนามธรรมระหว่างส่วนที่เหลือของโค้ดของคุณและฐานข้อมูลพื้นฐาน สาเหตุหลักมาจากความจริงเท่าที่ฉันสามารถบอกได้ว่าผู้ให้บริการเนื้อหาสามารถเข้าถึงข้อมูลจากที่อื่นที่ไม่ใช่ฐานข้อมูลได้
ซึ่งหมายความว่าคุณไม่สามารถดำเนินการแบบสอบถาม SQL ดิบบนฐานข้อมูลพื้นฐานและคุณต้องระบุส่วนประกอบต่างๆของคิวรี SQL โดยใช้ตัวแปรที่ส่งผ่านไปยังวิธีการต่างๆเช่นวิธีการสืบค้น หากคุณมีงานที่ไม่ตรงกับวิธีจัดการ SQL โดยผู้ให้บริการเนื้อหาคุณมีสองตัวเลือก:
ลองนึกถึงข้อความค้นหาในด้านข้างบางทีคุณอาจได้รับข้อมูลที่ต้องการโดยใช้แบบสอบถามทางเลือกและเข้าถึงผลลัพธ์จากเคอร์เซอร์ และใช้ URI เพื่อเข้าถึงข้อมูลตามปกติและ URI พิเศษที่ตรงกับแบบสอบถามเฉพาะสำหรับงานเหล่านั้นที่ไม่มีทางเลือกอื่น