2012-05-08 59 views
11

我有一個應用程序下載大量的內容(它可能會有所不同,但可能是200mb到1GB或更多)。Android - 內部存儲vs外部存儲當應用程序安裝在SD卡上

目前我將所有這些內容保存在外部存儲上,因爲這可能是空間最多的區域,如SD卡。這在大多數情況下工作正常,但是有一種情況,這不一定是理想的。

如果設備具有內置外部存儲設備(如大多數平板電腦),但也有SD卡插槽,則外部存儲問題會變得有點複雜。該應用程序可以安裝到SD卡上,但內容將保存在內置存儲器中,而不是外部SD卡上。

如果應用程序安裝在SD卡上,將調用getFilesDir()給SD卡上的路徑還是內部存儲?

處理此問題的最佳方法是什麼?我應該將內容保存到內部存儲器(在SD卡上),外部存儲器還是在啓動應用程序時詢問用戶最好的想法?

回答

5

該應用程序可以安裝到SD卡上,但內容將保存在內置存儲器中,而不是外部SD卡上。

否。如果設備有外部存儲器,則應用程序將安裝到外部存儲器。無論設備還有是否有SD卡。

如果應用程序安裝在SD卡上,會調用getFilesDir()在SD卡或內部存儲上給出路徑嗎?

getFilesDir()總是內部存儲,而不管安裝了該應用在何處。

+0

'沒有。如果設備具有外部存儲器,則應用程序將被安裝到外部存儲器。設備是否也有SD卡並不重要。「那麼你說的是,如果還有內置的外部存儲器,應用程序不能安裝在SD卡上? –

+0

@DavidScott:不,我是說Andrdoid沒有「安裝在SD卡上」的概念。它*確實具有「安裝在外部存儲器上」的概念 - 「外部存儲器」是否爲SD卡取決於設備製造商。 http://developer.android.com/guide/appendix/install-location.html – CommonsWare

+0

好的。我認爲正在發生的事情是,人們正在使用Apps2SD將應用程序從內置的外部存儲設備移動到SD卡。感謝您的澄清。 –

0

如果應用程序安裝在SD卡上,將調用getFilesDir()在SD卡或內部存儲上給出 路徑嗎?

No. getFilesDir()Context中的方法總是返回到內部存儲器的路徑(以Android條款)。

在大多數情況下,getFilesDir()返回的目錄路徑爲/data/data/your.application.package.appname/files。但它可能會在不同的手機,不同的Android版本上有所不同。

要將您的應用程序文件存儲在SD卡中,您可以在Context類中使用File[] getExternalFilesDirs (String type)方法。通常,第二個返回的路徑將是microSD卡的存儲路徑(如果有的話)。

在我的電話,第二個路徑返回根據谷歌/ Android官方文檔傳遞null作爲論據getExternalFilesDirs (String type)

的內部和外部存儲術語後爲/storage/sdcard1/Android/data/your.application.package.appname/files完全不同從我們在想什麼。

相關問題