Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android选择安装应用程序的位置';s数据_Android_Sharedpreferences - Fatal编程技术网

Android选择安装应用程序的位置';s数据

Android选择安装应用程序的位置';s数据,android,sharedpreferences,Android,Sharedpreferences,我想知道一件事:我想问用户,当第一次安装我的应用程序时,他将在sd卡或手机内存上首次同步后收到的数据保存在哪里,如果他第一次决定将文件存储在手机内存中,让他移动这些文件,但之后他决定将它们移动到sd卡上。我的问题是,哪种方法是记住他的选择并据此建立我的逻辑的最好方法。我正在考虑使用SharedReferences保存用户选择: editor.putBoolean("isSdCard",true); editor.putBoolean("isPhoneMemory", false);

我想知道一件事:我想问用户,当第一次安装我的应用程序时,他将在sd卡或手机内存上首次同步后收到的数据保存在哪里,如果他第一次决定将文件存储在手机内存中,让他移动这些文件,但之后他决定将它们移动到sd卡上。我的问题是,哪种方法是记住他的选择并据此建立我的逻辑的最好方法。我正在考虑使用
SharedReferences
保存用户选择:

   editor.putBoolean("isSdCard",true);
   editor.putBoolean("isPhoneMemory", false);
然后在我需要获取文件的任何地方使用这个
布尔值,首先获取存储,然后获取文件


对我来说,还有其他更好的解决方案吗?

我对你的应用不太了解,但如果以下内容适用于你的应用,我可能会有其他解决方案

  • 您的应用程序可以完全连接到SD卡
  • 下载的数据是临时的,这意味着如果用户想要删除它,它不会损害应用程序,用户可以稍后重新加载数据
  • 用户通过外部文件浏览器访问数据并不重要
如果是这样的话,就放弃这个选项。选项总是分散用户对应用程序主要用途的注意力。只需将您的安装位置设置为“自动”,并让用户决定将您的应用程序放置在何处。现在将数据保存到应用程序的

这种方法的优点是:

  • 如果应用程序位于SD卡上,则缓存将位于SD卡上;如果应用程序位于内存中,则缓存将位于内存中
  • 此外,如果用户删除应用程序,数据将被干净地删除。如果数据保存在SD卡上,则一旦用户删除应用程序,就无法删除此数据
  • 用户可以在应用程序设置面板中查看应用程序正在使用的内存量
  • 如果用户需要内存,她可以通过应用程序设置面板删除您声明为不重要的所有文件,而不会意外删除重要文件,如设置

实际上,我刚刚做出了选择,这样用户就可以将整个应用程序移动到sd卡上,但这也会移动所有文件。我的意思是,我只下载我在应用程序中显示的图像,我想让用户选择是否要将它们保存在手机内存或sd卡中。如果我将文件保存到cacheDir,用户从设置中清除应用程序的缓存,那么也会删除所有图片(我认为是的,我认为这不是一个好的解决方案)。有什么建议吗?如果您将图像保存到缓存目录,如果用户清除缓存,这些图像将被删除。在这种情况下,您可以稍后重新下载图像,因为如果用户需要空间,则用户需要空间,因此您应该删除应用程序未永久使用的所有内容。您还可以将图像保存到数据文件夹中。在这种情况下,仅当删除数据文件夹时,图像才会被删除。由于如果数据文件夹被清除,所有设置文件也将被删除,因此图像的位置也将被删除,并且图像仍需要重新下载