ทำไม ContentProvider ของ Android จึงถูกสร้างขึ้น


11

ชื่อสรุปคำถามของฉัน แต่การอธิบายอย่างละเอียดเกี่ยวกับสิ่งที่ฉันต้องการเข้าใจคือเหตุผลที่นักออกแบบ Android ต้องการแอปที่ต้องทำงานกับข้อมูลที่ใช้ร่วมกันเพื่อใช้ผู้ให้บริการเนื้อหามากกว่าเพียงแค่เข้าถึงฐานข้อมูล SQLite โดยตรง

เหตุผลเดียวที่ฉันนึกถึงคือความปลอดภัยเพราะไฟล์บางอย่างสามารถเข้าถึงได้โดยเป็นกระบวนการบางอย่างเท่านั้นและด้วยวิธีนี้ผู้ให้บริการเนื้อหาคือผู้รักษาความปลอดภัยที่รับรองว่าแต่ละแอปมีสิทธิ์ที่เหมาะสมก่อนที่จะอนุญาตให้อ่านหรือเขียนไฟล์ฐานข้อมูล นั่นเป็นเหตุผลหลักว่าทำไม ContentProvider ถูกสร้างขึ้น?

คำตอบ:


6

เหนือสิ่งอื่นใดคือวิธีป้องกันผู้บริโภคข้อมูลและผู้ให้บริการข้อมูล คุณพัฒนาผู้ให้บริการเนื้อหาของคุณเองหรือขยายผู้ให้บริการที่มีอยู่หากคุณต้องการทำให้ข้อมูลบางส่วนของคุณเป็นสาธารณะหรืออย่างน้อยก็พร้อมใช้งานกับแอปพลิเคชันอื่น

True เซิร์ฟเวอร์นี้สามารถควบคุมการเข้าถึงจากจุดรักษาความปลอดภัยในการดู แต่ยังช่วยให้คุณสามารถนำการใช้งานทางกายภาพของข้อมูลไปใช้ใหม่ได้ทุกเมื่อที่คุณต้องการ สิ่งที่คุณต้องทำคือการปรับเปลี่ยนส่วนหลังของผู้ให้บริการเนื้อหาของคุณในกรณีนั้น แอพพลิเคชั่นสำหรับผู้ใช้ข้อมูลจะไม่ต้องเขียนใหม่ พวกเขาจะดำเนินการเข้าถึงข้อมูลของคุณผ่านตัวแก้ไขเนื้อหาของพวกเขาโดยไม่รู้ตัวว่ามีการเปลี่ยนแปลงใด ๆ ในการนำไปปฏิบัติจริง

นอกจากนี้ Android จะยกตัวอย่างอินสแตนซ์เดียวของผู้ให้บริการเนื้อหาของคุณแม้ว่าจะมีการเข้าถึงข้อมูลโดยลูกค้าหลายรายดังนั้นมันจะดูแลการเข้าถึงพร้อมกันโดยที่คุณไม่ต้องสนใจ

ในที่สุดฉันเชื่อว่ามันจะจัดการกับความน่าเบื่อหน่ายของการเริ่มต้นที่สะอาดและปิดตัวลง


1
ฉันคิดว่าฉนวนน่าจะเป็นคำตอบที่ดีที่สุด ฉันไม่เห็นด้วยกับประเด็นของคุณเกี่ยวกับการเข้าถึงพร้อมกัน, SQLite และ Android Java interface จัดการการทำงานพร้อมกัน, ContentProvider เองอนุญาตให้มีหลายเธรดพร้อมกันในการสืบค้น / แทรก / อัปเดต
satur9nine

3

ContentProviderยัง abstracts ออกทั้งหมดของการสื่อสารระหว่างกระบวนการที่จำเป็นต้องมีเพื่อที่จะสื่อสารกับการใช้งานของบุคคลที่สามอื่น ๆ ต้องเขียนรหัสนี้ด้วยตัวเองจะเป็นความเจ็บปวดอย่างมาก


บุคคลที่สามสามารถเข้าถึงไฟล์ฐานข้อมูลได้โดยตรงไม่จำเป็นต้องมีการสื่อสารระหว่างกระบวนการ
satur9nine

ฉันไม่แน่ใจว่าคุณหมายถึงอะไร ... หากแอปเป็น "บุคคลที่สาม" ดังนั้นตามนิยามแล้วจะต้องมีอยู่ในกระบวนการที่แตกต่างกัน (เนื่องจากแอพ Android ทุกตัวมีกระบวนการหลักของตัวเอง) นอกจากนี้หาก Android OS อนุญาตให้คุณเข้าถึงที่เก็บข้อมูลดิบของแอปพลิเคชันอื่นโดยตรงจะทำให้เกิดปัญหาด้านความปลอดภัยที่น่าสนใจ
Alex Lockwood

1

ContentProvider ยังเป็นนามธรรมที่ซ่อนรายละเอียดของวิธีการจัดเก็บ / สร้างข้อมูล ตัวอย่างเช่นในหนึ่งในแอพของฉันฉันมีผู้ให้บริการเนื้อหาที่ส่งคืนรูปภาพ PNG ภาพเหล่านี้จะไม่ถูกเก็บไว้ที่ใดก็ได้ แต่จะถูกสร้างขึ้นตามความต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.