Android SharedPreferences的使用案例

34 篇文章 0 订阅

//基本操作:
1、初始化:
方法一:(默认文件名)
SharedPreferences data=getPreferences(MODE_PRIVATE);//未命名的方式,会对应生成相应activity的xml文件,为该活动所单独使用
方法二:
SharedPreferences data=getSharedPreferences("Mydata",MODE_PRIVATE);//方式二,带名字的存储,会对应生成该名字的xml存储文件

eidtor:
eidtor=data.edit();

2、添加:
editor.putString("hello","你好哇");//通过editor.put来写入数据
editor.putInt("NUM",233);
editor.apply();//操作完毕后记得editor.apply()或editor.commit()应用数据操作


3、删除:
editor.remove(键名).commit();
editor.clear().commit();//清空所有

4、修改:
editor.putString("hello","你好哇!!!!");//再次使用相同键名时为修改
editor.commit();

5、查询:
data.getString(键名,"");//""为缺省值
data.getInt(键名,0);//0为缺省值

案例一:在主活动中直接使用:

package com.example.mytests.activities;

import com.example.mytests.R;
import com.example.mytests.viewModels.MyData;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;

public class SharePreferenceTest extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_share_preference_test);

        //SharedPreferences data=getPreferences(MODE_PRIVATE);//未命名的方式,会对应生成相应activity的xml文件,为该活动所单独使用
        SharedPreferences data=getSharedPreferences("Mydata",MODE_PRIVATE);//方式二,带名字的存储,会对应生成该名字的xml存储文件
        SharedPreferences.Editor editor=data.edit();//使用时申请一个编辑器
        editor.putString("hello","你好哇");//通过editor.put来写入数据
        editor.apply();//操作完毕后记得editor.apply()应用数据操作

        String str=data.getString("hello","none");//通过sharePreferences对象.get来获取存储的值
        Log.d("输出:", "onCreate: "+str);
    }
}

运行后存储可通过根目录/data/data/对应包名/share_prefs访问到:

 可以看到生成了对应名字的文件;

点开发现已写入。 

案例二:在外部引入,正规的写法:

创建你的MyData类,构造函数传入context

package com.example.mytests.viewModels;
import com.example.mytests.R;

import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;

public class MyData {
    private Context mContext;
    private SharedPreferences mData;
    private SharedPreferences.Editor mEditor;
    public MyData(Context context) {
        mContext=context;
    }

    public void save(String str){
        String name=mContext.getResources().getString(R.string.My_data);
        mData=mContext.getSharedPreferences(name,Context.MODE_PRIVATE);
        mEditor=mData.edit();
        mEditor.putString(mContext.getResources().getString(R.string.string_name),str);
        mEditor.apply();
    }

    public void load(){
        String str=mData.getString(mContext.getResources().getString(R.string.string_name),"none");
        Log.d("输出", "load: "+str);
    }

}

 在你对应的活动中实例化:

这里传入context时需注意不能用this,必要的是getApplicationContext()全局变量,以防数据泄露,因为传入this时,在活动生命周期结束时,该data对象可能还存在。

package com.example.mytests.activities;

import com.example.mytests.R;
import com.example.mytests.viewModels.MyData;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class SharePreferenceTest extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_share_preference_test);

        MyData data=new MyData(getApplicationContext());//这里不能用this,会造成数据的泄漏,应使用顶级全局变量getApplicatioinContext
        data.save("1000");
        data.load();
    }
}

此外,涉及的修改操作可通过editor.put...(...).commit()来提交修改,

清除操作可通过editor.clear().commit()清空。

删除操作可通过editor.remove(键名).commit()删除某个数据。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值