首页 > 系统 > Android > 正文

Android中的数据存储方式

2019-11-08 00:29:43
字体:
来源:转载
供稿:网友

官方文档: Saving Data

1. 使用SharedPReferences

getSharedPreferences(name, mode) — Use this if you need multiple shared preference files identified by name, which you specify with the first parameter. You can call this from any Context in your app. 可从任何Context中获取指定name的SharedPreferences,name必须要独特,推荐以包名开头。getPreferences() — Use this from an Activity if you need to use only one shared preference file for the activity. Because this retrieves a default shared preference file that belongs to the activity, you don’t need to supply a name. 获取该Activity中的SharedPreferences,该文件以该activity.class命名。

工具类在gittub上。该工具类默认提供一个sharedPreferences,可以传入name获取指定的SharedPreferences。大大方便了调用者。 在项目中可以使用多个SharedPreferences,之前的大多数工具类全部把数据放入一个SharedPreferences中,这样会降低SharedPreferences的查找速度。PreferenceUtil

//示例代码:PreferenceUtil.instance().put("key", "value").commit();

2. 使用文件

概述

文件存储地方分为内部存储和外部存储,外部存储分为应用私有数据和公有数据。内部存储全为私有数据。私有数据在应用卸载时会被系统全部删掉,公有数据不会。

使用Internal Storage

卸载应用时会将该目录下所有文件清除。

getDir("fileName", mode);// /data/data/包名/app_fileNamegetFilesDir();// /data/data/包名/filesgetFileStreamPath("fileName");// /data/data/包名/files/fileName//Be sure to delete each file once it is no longer needed。手动删除不用的文件//If the system begins running low on storage, it may delete your cache files without warning.如果空间不足,则系统会自动删除一些文件getCacheDir();// /data/data/包名/cache。 //也可以直接使用File的静态方法创建文件File.createTempFile("prefix", "suffix");// /data/data/包名/cache/prefix + Math.randomIntInternal() + suffix

使用External Storage

使用前必须判断外部存储是否可用。外部存储没有实时监控,当空间不足时,文件不会实时被删除,可能返回空对象。不用check可用空间,应当使用try catch包裹再处理。

工具类在github上。StorageUtil

外部私有文件Private files,应用卸载时会删除该文件//获取外部缓存文件路径getExternalCacheDir();// /storage/emulated/0/Android/data/包名/cache//获取外部文件存储路径getExternalFilesDir(""); // /storage/emulated/0/Android/data/包名/files//获取指定type外部文件存储路径getExternalFilesDir("fileName");// /storage/emulated/0/Android/data/包名/files/fileName公共文件Public files:文件是可以被自由访问,且文件的数据对其他应用或者用户来说都是由意义的,当应用被卸载之后,其卸载前创建的文件仍然保留。//获取外部公有路径Environment.getExternalStorageDirectory();// /storage/emulated/0Environment.getExternalStoragePublicDirectory("");// /storage/emulated/0Environment.getExternalStoragePublicDirectory("fileName");// /storage/emulated/0/fileName

android中的文件操作详解以及内部存储和外部存储 Android存储使用参考

删除文件

调用file.delete()方法如果是存储在内部存储上,可用直接调用context.deleteFile(“fileName”)删除文件。

3. 使用数据库

使用数据库存储数据,我们一般都使用第三方库来完成。如green-dao等。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表