Data and file storage on Android

img src : https://developer.android.com/training/data-storage

Preferences :  *ไฟล์หายเมื่อลบแอพ
 - ข้อมูลที่เก็บแบบมี key กับ value ในไฟล์ .xml (เจอบ่อยสุด)
 - Shared Preference
 - Secure Preference
 - EncryptedSharedPreferences

Database : ฐานข้อมูล ใน android app *ไฟล์หายเมื่อลบแอพ
  - SQLiteOpenHelper
  - Room
  - SQLCipher

Shared storage : ข้อมูลที่แชร์กับแอปอื่นๆ
 เช่น Media : images , audio , videos , documents *ไฟล์ไม่หายเมื่อลบแอพ
 - MediaStore API
 - Content Provider สำหรับเปิด Database ให้แอพอื่นสามารถ Query มาที่แอพเราได้
                                สามารถกำหนดได้เช่น เฉพาะแอพที่ใช้ keystore เดียวกัน

App-specific storage : แบ่งออกเป็น 2 ประเภท

Internal Storage (เก็บน้อยๆแต่ปลอดภัย) *ไฟล์หายเมื่อลบแอพ
 - getFilesDir()  ไฟล์จะถูกเก็บที่ : package_name/files/
 - getCacheDir() ไฟล์จะถูกเก็บที่ : package_name/cache/

External Storage (เก็บข้อมูลเยอะๆ) *ไม่ลบไฟล์เมื่อลบแอพ
 - getExternalFilesDir() ไฟล์จะถูกเก็บที่ : /storage/sdcard0/Android/data/package_name/files/........
 - getExternalCacheDir()  ไฟล์จะถูกเก็บที่ : ..........................................