Android入门之使用SharedPreference存取信息详解
简介
上一篇我们介绍了在android里如何读写本地文件。我们有一种场景,类似网页的cookie,要把用户的一些储如上一次登录、使用的痕迹等信息保存下来以便于每次不需要做重复“填表单”的操作,当在这种场景下我们如果也使用本地文件读写的话显然是“太重”了。因此android提供了一种轻量级存储叫SharedPreference专门用来存储这种场景下的数据。
SharedPreference原理
比如下面这样的一个登录界面,我们把用户登录成功后的信息保存在SharedPreference中,这样用户下次打开手机那么相应的登录过的信息就可以直接自动填充就可以了。这种场景我们就是使用的SharedPreference来做存储的。
SharedPreference的存储
SharedPreference一旦生成后,我们使用Android Studio里的device file explorer
我们可以在data\data\应用实例全package路径里的\shared_prefs文件夹下可以看到我们生成的shared preference的.xml文件。
打开这个文件我们看到了什么?
后端代码
SharedPreferenceHelper.java
package org.mk.android.demo; import android.content.Context; import android.content.SharedPreferences; import android.widget.Toast; import java.util.HashMap; import java.util.Map; public class SharedPreferenceHelper { private final static String SP_TAG="demosp"; private Context mContext; public SharedPreferenceHelper() { } public SharedPreferenceHelper(Context mContext) { this.mContext = mContext; } //定义一个保存数据的方法 public void save(String loginId, String password) { SharedPreferences sp = mContext.getSharedPreferences(SP_TAG, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString("loginId", loginId); editor.putString("password", password); editor.commit(); Toast.makeText(mContext, "信息已写入SharedPreference["+SP_TAG+"]中", Toast.LENGTH_SHORT).show(); } //定义一个读取SP文件的方法 public Map<String, String> read() { Map<String, String> data = new HashMap<String, String>(); SharedPreferences sp = mContext.getSharedPreferences(SP_TAG, Context.MODE_PRIVATE); data.put("loginId", sp.getString("loginId", "")); data.put("password", sp.getString("password", "")); return data; } }
HomePage.java
package org.mk.android.demo; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.util.Map; public class HomePage extends AppCompatActivity { private SharedPreferenceHelper spHelper; private Context ctx; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home_page); Button buttonBack=(Button)findViewById(R.id.buttonBack); buttonBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); } @Override protected void onStart() { super.onStart(); ctx = getApplicationContext(); spHelper = new SharedPreferenceHelper(ctx); Map<String, String> data = spHelper.read(); Toast.makeText(ctx, "从SharedPreference中读到信息LoginId->" + data.get("loginId") + " password->" + data.get("password"), Toast.LENGTH_SHORT).show(); } }
MainActivity.java
package org.mk.android.demo; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import java.util.Map; public class MainActivity extends AppCompatActivity { private EditText editLoginId; private EditText editPassword; private Button buttonLogin; private String strLoginId; private String strPassword; private SharedPreferenceHelper spHelper; private Context ctx; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ctx = getApplicationContext(); spHelper = new SharedPreferenceHelper(ctx); bindView(); } private void bindView(){ editLoginId = (EditText)findViewById(R.id.editLoginid); editPassword = (EditText)findViewById(R.id.editPassword); buttonLogin = (Button)findViewById(R.id.buttonLogin); buttonLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { strLoginId=editLoginId.getText().toString(); strPassword=editPassword.getText().toString(); spHelper.save(strLoginId,strPassword); Intent homeIt = new Intent(MainActivity.this, HomePage.class); startActivity(homeIt); } }); } @Override protected void onStart() { super.onStart(); ctx = getApplicationContext(); spHelper = new SharedPreferenceHelper(ctx); Map<String, String> data = spHelper.read(); Toast.makeText(ctx, "从SharedPreference中读到信息LoginId->" + data.get("loginId") + " password->" + data.get("password"), Toast.LENGTH_SHORT).show(); } }
核心代码导读:
1.当我们点击了登录按钮后,我们把当前用户的登录信息通过SharedPreferenceHelper保存进demo_sp.xml这个SharedPreference文件中去;
2.当我们每次切换到activity_main主界面时,在onStart中触发读取上次保存进SharedPreference中的内容并以Toast显示;
很简单吧,自己动一下手试试吧。
以上就是Android入门之使用SharedPreference存取信息详解的详细内容,更多关于Android SharedPreference存取信息的资料请关注脚本之家其它相关文章!
相关文章
Android Hilt Retrofit Paging3使用实例
这篇文章主要介绍了Android Hilt依赖注入的使用,首先,某个类的成员变量称为依赖,如若此变量想要实例化引用其类的方法,可以通过构造函数传参或者通过某个方法获取对象,此等通过外部方法获取对象实例的称为依赖注入2023-01-01Android webview 遇到android.os.FileUriExposedException错误解决办法
这篇文章主要介绍了Android webview 遇到android.os.FileUriExposedException错误解决办法的相关资料,希望通过本文能帮助到大家,让大家遇到这样的问题解决,需要的朋友可以参考下2017-10-10Android自定义控件ImageView实现点击之后出现阴影效果
这篇文章主要为大家详细介绍了Android自定义控件ImageView实现点击之后有阴影效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-12-12
最新评论