博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据存储之SharedPreferences
阅读量:6218 次
发布时间:2019-06-21

本文共 2824 字,大约阅读时间需要 9 分钟。

在使用SharedPreferences时老是提示ANR,在网上搜索了下,解决了。

下面是转载

 

1.适用场合:类似于ini文件,用来保存程序的一些属性设置

2.使用方式:通过getSharedPreferences方法获得Preferences对象,获得editor对象,使用editor.put……()方法添加数据,最后通过commit()方法保存这些数据

ShardPreferences mState = this,getPrefersences();

ShardPreferences.Editor editor = mState.edit();

editor.putint("num",99);

editor.apply();  //注意这边官方推荐使用apply来替代commit()提交数据,这样可以避免引起ANR,commit()操作会需要在UI线程进行等待

 

  1. SharedPreferences preferences = getSharedPreferences("kesenhoo", Context.MODE_PRIVATE);  
  2.                 String name = preferences.getString("name""");  
  3.                 int age = preferences.getInt("age"20);  
  4.                 nameText.setText(name);  
  5.                 ageText.setText(String.valueOf(age));  

 

3.读取参数:

 

  1. SharedPreferences preferences = getSharedPreferences("kesenhoo", Context.MODE_PRIVATE);  
  2.                 String name = preferences.getString("name""");  
  3.                 int age = preferences.getInt("age"20);  
  4.                 nameText.setText(name);  
  5.                 ageText.setText(String.valueOf(age));  

 

 

4.保存参数:自动保存到XML文件,路径为/data/data/包名/shared_prefs文件夹下

 

5.注意事项:默认情况其他应用程序不可以访问本程序的SharedPreferences文件,如果需要访问其他应用程序的SharedPreferences的配置文件,可以使用如下方法:

关键点:学习如何构造其他应用的上下文对象

Context otherContext = getContext().createPackageContext("com.hoo.preferences",Context.CONTEXT_IGNORE_SECURITY);

SharedPreferences preferences = otherContext.getSharedPreferences("kesenhoo", Context.MODE_PRIVATE);

//下面的包名应该是需要访问的其他程序的所在位置,并设置为忽视安全问题  

 

  1. //下面的包名应该是需要访问的其他程序的所在位置,并设置为忽视安全问题  
  2.         Context otherContext = getContext().createPackageContext("com.hoo.preferences",  
  3.                 Context.CONTEXT_IGNORE_SECURITY);  
  4.         SharedPreferences preferences = otherContext.getSharedPreferences("kesenhoo", Context.MODE_PRIVATE);  
  5.         String name = preferences.getString("name""");  
  6.         int age = preferences.getInt("age"20);  
  7.         Log.i(TAG, "name="+ name + ",age="+ age);  

 

 

 

6.GetPreferences()与getSharedPreferences()的区别

 

To get a  object for your application, use one of two methods:

  •  - Use this if you need multiple preferences files identified by name, which you specify with the first parameter.
  •  - Use this if you need only one preferences file for your Activity. Because this will be the only preferences file for your Activity, you don't supply a name.

官方Demo:

 

  1. public class Calc extends Activity {  
  2.     public static final String PREFS_NAME = "MyPrefsFile";  
  3.   
  4.     @Override  
  5.     protected void onCreate(Bundle state){  
  6.        super.onCreate(state);  
  7.        . . .  
  8.   
  9.        // Restore preferences  
  10.        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);  
  11.        boolean silent = settings.getBoolean("silentMode"false);  
  12.        setSilent(silent);  
  13.     }  
  14.   
  15.     @Override  
  16.     protected void onStop(){  
  17.        super.onStop();  
  18.   
  19.       // We need an Editor object to make preference changes.  
  20.       // All objects are from android.context.Context  
  21.       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);  
  22.       SharedPreferences.Editor editor = settings.edit();  
  23.       editor.putBoolean("silentMode", mSilentMode);  
  24.   
  25.       // Commit the edits!  
  26.       editor.commit();  
  27.     }  
  28. }  

 

 

转载于:https://www.cnblogs.com/tnxk/archive/2012/04/14/2446989.html

你可能感兴趣的文章
[转]刷量那些事儿。刷子是如何刷量的?
查看>>
window下Nodejs的部署
查看>>
pwd命令(转)
查看>>
第十九章——使用资源调控器管理资源(3)——监控资源调控器
查看>>
微软职位内部推荐-Software Engineer II
查看>>
**PHP错误Cannot use object of type stdClass as array in错误的
查看>>
漫谈python中的搜索/排序
查看>>
求π的近似值
查看>>
索引深入浅出(5/10):非聚集索引的B树结构在堆表
查看>>
【git学习五】git基础之git分支
查看>>
Java多线程之wait(),notify(),notifyAll()
查看>>
精通javascript(看书笔记)
查看>>
简单工厂模式
查看>>
数据挖掘实习
查看>>
关于telnet协议的研究以及用java进行封装实现自己的telnet客户端(转)
查看>>
jQuery 效果 - 淡入淡出
查看>>
cachefiled
查看>>
oncopy和onpaste
查看>>
栈和堆之间的差
查看>>
net-snmp-5.7.3配置编译安装
查看>>