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_fileName
getFilesDir();// /data/data/包名/files
getFileStreamPath("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/0
Environment.getExternalStoragePublicDirectory("");// /storage/emulated/0
Environment.getExternalStoragePublicDirectory("fileName");// /storage/emulated/0/fileName
android中的文件操作详解以及内部存储和外部存储
Android存储使用参考
删除文件
- 调用file.delete()方法
- 如果是存储在内部存储上,可用直接调用context.deleteFile(“fileName”)删除文件。
3. 使用数据库
使用数据库存储数据,我们一般都使用第三方库来完成。如green-dao等。
本文深入解析Android中的存储技术,包括使用SharedPreferences管理数据、文件存储方式(内部存储与外部存储)及数据库存储策略。重点介绍了SharedPreferences的使用方法,文件存储的内部与外部区别,以及如何在项目中灵活运用数据库存储数据,同时提供了实例代码指导。
496

被折叠的 条评论
为什么被折叠?



