Android ใช้ระบบไฟล์ที่คล้ายกับระบบไฟล์ที่อิงตามดิสก์ในแพลตฟอร์มอื่นๆ ระบบมีตัวเลือกหลายอย่างให้คุณบันทึกข้อมูลแอป ดังนี้
- พื้นที่เก็บข้อมูลเฉพาะแอป: จัดเก็บไฟล์ที่ตั้งใจไว้ให้แอปของคุณใช้เท่านั้น ในไดเรกทอรีเฉพาะภายในวอลุ่มที่จัดเก็บข้อมูลภายในหรือไดเรกทอรีเฉพาะอื่นๆ ภายในที่จัดเก็บข้อมูลภายนอก ใช้ไดเรกทอรีภายในที่จัดเก็บข้อมูลภายในเพื่อบันทึกข้อมูลที่ละเอียดอ่อนซึ่งแอปอื่นๆ ไม่ควรเข้าถึง
- พื้นที่เก็บข้อมูลที่แชร์: จัดเก็บไฟล์ที่แอปของคุณต้องการแชร์กับแอปอื่นๆ ซึ่งรวมถึงสื่อ เอกสาร และไฟล์อื่นๆ
- ค่ากำหนด: จัดเก็บข้อมูลดั้งเดิมแบบส่วนตัวในคู่คีย์-ค่า
- ฐานข้อมูล: จัดเก็บข้อมูลที่มีโครงสร้างในฐานข้อมูลส่วนตัวโดยใช้ไลบรารีความคงทนของ Room
ลักษณะของตัวเลือกเหล่านี้สรุปได้ในตารางต่อไปนี้
| ประเภทเนื้อหา | วิธีการเข้าถึง | สิทธิ์ที่จำเป็น | แอปอื่นๆ เข้าถึงได้ไหม | ระบบจะนำไฟล์ออกเมื่อถอนการติดตั้งแอปใช่ไหม | |
|---|---|---|---|---|---|
| ไฟล์เฉพาะแอป | ไฟล์ที่มีไว้สำหรับใช้ในแอปของคุณเท่านั้น | จากที่จัดเก็บข้อมูลภายใน getFilesDir() หรือ
getCacheDir()จากที่จัดเก็บข้อมูลภายนอก getExternalFilesDir() หรือ
getExternalCacheDir() |
ไม่จำเป็นสำหรับที่จัดเก็บข้อมูลภายใน ไม่จำเป็นสำหรับที่จัดเก็บข้อมูลภายนอก เมื่อใช้แอปในอุปกรณ์ที่ใช้ Android 4.4 (ระดับ API 19) ขึ้นไป |
ไม่ | ใช่ |
| สื่อ | ไฟล์สื่อที่แชร์ได้ (รูปภาพ ไฟล์เสียง วิดีโอ) | MediaStore API |
READ_EXTERNAL_STORAGE เมื่อเข้าถึงไฟล์ของแอปอื่นใน
Android 11 (ระดับ API 30) ขึ้นไปREAD_EXTERNAL_STORAGE หรือ WRITE_EXTERNAL_STORAGE
เมื่อเข้าถึงไฟล์ของแอปอื่นใน Android 10 (ระดับ API 29)ต้องมีสิทธิ์สำหรับไฟล์ทั้งหมดใน Android 9 (ระดับ API 28) หรือ ต่ำกว่า |
ได้ แต่แอปอื่นต้องมีสิทธิ์ READ_EXTERNAL_STORAGE
|
ไม่ |
| เอกสารและ ไฟล์อื่นๆ | เนื้อหาประเภทอื่นๆ ที่แชร์ได้ รวมถึงไฟล์ที่ดาวน์โหลด | เฟรมเวิร์กการเข้าถึงพื้นที่เก็บข้อมูล | ไม่มี | ได้ ผ่านเครื่องมือเลือกไฟล์ของระบบ | ไม่ |
| ค่ากำหนด ของแอป | คู่คีย์-ค่า | ไลบรารี Jetpack Preferences | ไม่มี | ไม่ | ใช่ |
| ฐานข้อมูล | ข้อมูลที่มีโครงสร้าง | ไลบรารีการคงอยู่ของ Room | ไม่มี | ไม่ | ใช่ |
โซลูชันที่คุณเลือกจะขึ้นอยู่กับความต้องการเฉพาะของคุณ ดังนี้
- ข้อมูลของคุณต้องใช้พื้นที่เท่าใด
- ที่จัดเก็บข้อมูลภายในมีพื้นที่จำกัดสำหรับข้อมูลเฉพาะของแอป ใช้พื้นที่เก็บข้อมูลประเภทอื่นหากต้องการบันทึกข้อมูลจำนวนมาก
- การเข้าถึงข้อมูลต้องมีความน่าเชื่อถือมากน้อยเพียงใด
- หากฟังก์ชันพื้นฐานของแอปต้องใช้ข้อมูลบางอย่าง เช่น เมื่อแอป เริ่มต้นทำงาน ให้วางข้อมูลไว้ในไดเรกทอรีที่จัดเก็บข้อมูลภายในหรือฐานข้อมูล คุณอาจเข้าถึงไฟล์เฉพาะแอปที่จัดเก็บไว้ในที่จัดเก็บข้อมูลภายนอกไม่ได้เสมอไป เนื่องจากอุปกรณ์บางรุ่นอนุญาตให้ผู้ใช้นำอุปกรณ์จริงที่สอดคล้องกับ ที่จัดเก็บข้อมูลภายนอกออก
- คุณต้องการจัดเก็บข้อมูลประเภทใด
- หากมีข้อมูลที่มีความหมายเฉพาะสำหรับแอป ให้ใช้พื้นที่เก็บข้อมูลเฉพาะแอป สำหรับเนื้อหาสื่อที่แชร์ได้ ให้ใช้พื้นที่เก็บข้อมูลที่แชร์เพื่อให้แอปอื่นๆ เข้าถึงเนื้อหาได้ สำหรับ Structured Data ให้ใช้ค่ากำหนด (สำหรับข้อมูลคีย์-ค่า ) หรือฐานข้อมูล (สำหรับข้อมูลที่มีมากกว่า 2 คอลัมน์)