ภาพรวมของพื้นที่เก็บข้อมูลและไฟล์

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 คอลัมน์)