Android的存儲(chǔ)系統(tǒng)主要分為內(nèi)部存儲(chǔ)和外部存儲(chǔ),它們?cè)跀?shù)據(jù)存儲(chǔ)、訪問(wèn)權(quán)限、數(shù)據(jù)持久性等方面存在顯著差異。以下是詳細(xì)介紹:
內(nèi)部存儲(chǔ)與外部存儲(chǔ)的定義
- 內(nèi)部存儲(chǔ):設(shè)備的內(nèi)置存儲(chǔ),專門用于保存應(yīng)用的私有數(shù)據(jù)。每個(gè)應(yīng)用都有自己的內(nèi)部存儲(chǔ)空間,其他應(yīng)用不能訪問(wèn)。
- 外部存儲(chǔ):設(shè)備的共享存儲(chǔ)區(qū)域,可以是內(nèi)置存儲(chǔ)(如主存儲(chǔ))或可移動(dòng)存儲(chǔ)(如SD卡)。外部存儲(chǔ)可以被多個(gè)應(yīng)用訪問(wèn),但需要申請(qǐng)相應(yīng)的權(quán)限。
訪問(wèn)權(quán)限
- 內(nèi)部存儲(chǔ):每個(gè)應(yīng)用的內(nèi)部存儲(chǔ)空間僅允許自己訪問(wèn),除非有更高的權(quán)限,如root。
- 外部存儲(chǔ):需要申請(qǐng)讀寫權(quán)限。所有應(yīng)用都可以讀外部存儲(chǔ)而不需要任何權(quán)限,但寫操作需要申請(qǐng)WRITE_EXTERNAL_STORAGE權(quán)限。
數(shù)據(jù)持久性
- 內(nèi)部存儲(chǔ):應(yīng)用卸載后,該目錄也會(huì)被刪除。
- 外部存儲(chǔ):應(yīng)用卸載時(shí),只有存在
/storage/emulated/0/Android/data/package_name/
路徑下的文件會(huì)消失。
使用場(chǎng)景
- 內(nèi)部存儲(chǔ):適用于存儲(chǔ)應(yīng)用的配置文件、用戶數(shù)據(jù)等私有文件。
- 外部存儲(chǔ):用于存放用戶可見(jiàn)的文件,如圖片、音頻、視頻等,或應(yīng)用希望與其他App共享或傳到電腦上的文件。
存儲(chǔ)位置
- 內(nèi)部存儲(chǔ):路徑為
/data/data/<package_name>/
。
- 外部存儲(chǔ):路徑為
/storage/emulated/0/
或Environment.getExternalStorageDirectory()
。
權(quán)限申請(qǐng)
- 內(nèi)部存儲(chǔ):不需要申請(qǐng)額外權(quán)限。
- 外部存儲(chǔ):需要申請(qǐng)
READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
權(quán)限。
可信度
- 內(nèi)部存儲(chǔ):永遠(yuǎn)可用(Permanent)。
- 外部存儲(chǔ):可能不可用,最典型的當(dāng)設(shè)備作為USB存儲(chǔ)被mount時(shí)不可用。
通過(guò)上述對(duì)比,可以看出內(nèi)部存儲(chǔ)和外部存儲(chǔ)各有其特點(diǎn)和適用場(chǎng)景,開(kāi)發(fā)者在設(shè)計(jì)應(yīng)用時(shí),應(yīng)根據(jù)數(shù)據(jù)的重要性和訪問(wèn)需求,選擇合適的存儲(chǔ)方式。