Android SharedPreferences使用详解

水深无声 2024-04-08 09:45 162阅读 0赞

Android数据存储

      • 共享数据SharedPreferences
      • 应用组件Application
        • Application的生命周期
        • 利用Appliaction操作全局变量

共享数据SharedPreferences

  • 共享数据的用法
    SharedPreferences 是Android的一个轻量级存储工具,采用的存储结构是Key-Value的键值对形势
    共享参数的存储介质是符合XML规范的配置文件,保存路径是:/data/data/应用包名/shared_prefs/文件名.xml
    主要用于存储App的个性化配置信息,用户的行为信息,临时需要保存的片段信息

    //通过SharedPreferences,做成config.xml并写入信息

    1. //通常SharedPreferences对象会在onCreate方法里取得
    2. public void onClick(View view) {
    3. //获取一个SharedPreferences对象,做成一个叫config的xml文件,它的模式是私有的
    4. SharedPreferences sp = getSharedPreferences("config", Context.MODE_PRIVATE);
    5. //要想编辑它,首先需要调用edit方法,拿到Editor对象
    6. SharedPreferences.Editor editor = sp.edit();
    7. editor.putString("name", "Tom");
    8. editor.putInt("age", 10);
    9. //编辑完了后,提交
    10. editor.commit();
    11. }

    //从SharedPreferences对象里取值的方法,getXXXX,方法两个,第一个是key,第二个是defValue默认值

    1. String name = sp.getString("name",null);

应用组件Application

Application的生命周期

Application是Android的一个大组件,在App运行过程中有且仅有一个Application对象,贯穿于整个生命周期

  1. public class MyApplication extends Application {
  2. //在App启动时调用
  3. @Override
  4. public void onCreate() {
  5. super.onCreate();
  6. Log.i("message", "onCreate");
  7. }
  8. //在App终止时调用,但属于是模拟方法,应用不会被回调,只在系统开发时用到
  9. @Override
  10. public void onTerminate() {
  11. super.onTerminate();
  12. Log.i("message", "onTerminate");
  13. }
  14. //在配置改变时调用,当横屏变为竖屏的时候
  15. @Override
  16. public void onConfigurationChanged(@NonNull Configuration newConfig) {
  17. super.onConfigurationChanged(newConfig);
  18. Log.i("message", "onConfigurationChanged");
  19. }
  20. }
利用Appliaction操作全局变量

全局变量可以方便整个应用中的各个组件间传递和共享数据
适合在Application中保存的全局变量主要有下面3种:

  • 会频繁读取的信息,如用户名,手机号
  • 不方便由意图传递的数据,例如位图对象,非字符串类型的集合对象
  • 容易因频繁分配内存而导致内存泄漏的对象,如Handler对象

    public class MyApplication extends Application {

  1. private MyApplication myApp;
  2. public Map<String, String> infoMap = new HashMap<String, String>();
  3. public MyApplication getInit(){
  4. return this.myApp;
  5. }
  6. //在App启动时调用
  7. @Override
  8. public void onCreate() {
  9. super.onCreate();
  10. myApp = this;
  11. Log.i("message", "onCreate");
  12. }
  13. }

发表评论

表情:
评论列表 (有 0 条评论,162人围观)

还没有评论,来说两句吧...

相关阅读