效果图写入数据读取数据源码
AddDataTestActivityactivity_add_data_test.xmlSharedPreferencesUtil Log打印日志类(LogUtil)---------------------------------SharedPreferences.Editor的commit()方法和apply()方法的区别
效果图写入数据 读取数据 源码 AddDataTestActivity点击存入,点击获取 吐司结果
package com.gaojc.activity; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; import com.gaojc.text.R; import com.gaojc.text.Utils.LogUtil; import com.gaojc.text.Utils.SharedPreferencesUtil; public class AddDataTestActivity extends AppCompatActivity { // 需要存入的数据(这里为了方便,所以使用假数据) private final static String CODE = "ABC666"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_data_test); findViewById(R.id.saveData).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SharedPreferencesUtil.getInstance(AddDataTestActivity.this).putString("code",CODE); } }); findViewById(R.id.getData).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String code = SharedPreferencesUtil.getInstance(AddDataTestActivity.this).getString("code"); Toast.makeText(AddDataTestActivity.this,"code:" + code,Toast.LENGTH_LONG).show(); LogUtil.e("code:" + code); } }); } }activity_add_data_test.xml
SharedPreferencesUtil
package com.gaojc.text.Utils; import android.content.Context; import android.content.SharedPreferences; import android.text.TextUtils; public class SharedPreferencesUtil { private static SharedPreferences mSharedPreferences; //保存数据接口 private static SharedPreferences.Editor mEditor; //Editor对象用来写入数据 private static SharedPreferencesUtil mSharedPreferencesUtil; // 构造方法 public SharedPreferencesUtil(Context context) { mSharedPreferences = context.getSharedPreferences("config", Context.MODE_PRIVATE); // 获取Editor对象 mEditor = mSharedPreferences.edit(); } // 单例模式 public static SharedPreferencesUtil getInstance(Context context) { if (mSharedPreferencesUtil == null) { mSharedPreferencesUtil = new SharedPreferencesUtil(context); } return mSharedPreferencesUtil; } // 存入数据 public void putString(String key, String value) { if (TextUtils.isEmpty(value)) { value = ""; } // apply():提交 mEditor.putString(key, value).apply(); } // 获取数据 public String getString(String key) { return mSharedPreferences.getString(key, ""); } }Log打印日志类(LogUtil) --------------------------------- SharedPreferences.Editor的commit()方法和apply()方法的区别
Android存储(SharedPreferences.Editor)commit()和apply()区别:
commit和apply虽然都是原子性 *** 作,但是原子的 *** 作不同,commit是原子提交到数据库,从提交数据到存在磁盘中都是同步过程;
而apply方法的原子 *** 作是原子提交到内存中,而非数据库,之后再异步提交数据到数据库中。
commit提交是同步过程,效率会比apply异步提交的速度慢,有返回值;apply没有返回值,无法知道存储是否失败。
在不关心提交结果是否成功的情况下,优先考虑apply方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)