一、getSharedPreferences()和getPreferences()方法
Context类中的getSharedPreferences ( ) 方法
此方法有2个参数,getSharedPreferences(name,mode):第一个参数(name)用于指定 SharedPreferences 文件的名称,若指定的文件不存在则创建一个;第二个参数(mode)用于指定操作模式,默认操作模式为MODE_PRIVATE,Android 6.0以上只有这一种模式可选。
Activity类中的getPreferences ( ) 方法
这个方法和Context中的方法类似,但它只需要一个参数,即getPreferences (mode) 。因为使用这个方法会自动将当前活动的类名作为 SharedPreferences 的文件名。
对于多个Activity之间使用SharedPreferences传值,建议getSharedPreferences(name,mode)指定同一个的name。
————————————————
原文链接:https://blog.csdn.net/qq_33852648/article/details/99820852
二、
应用程序App共有的Context数目公式为:
总Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context实例)
三、Android中实现存储数据的方法:
(1)SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态。
(2)内部文件存储设备。文件可以存储大量图片,文件,视频等。默认位置:/data/data/包名/****.
(3)外部文件存储设备。将文件存储在sdcard中。
(4)SQL数据库存储数据。位置:/data/<项目文件>/database/***.可以Content Provider和service获取数据库
(5)网络存储数据。
2.SharedPreferences保存数据
(1)根据Activity.getSharedPreferences获取SharedPreferences对象。
(2)SharedPreferences.Editor对象获取Editor对象。
(3)SharedPreferences.Editor.putXXX添加数据。
(4)SharedPreferences.Editor.commit提交数据。
(5)代码实现:
<span style="font-size:18px;">SharedPreferences mySharedPreferences= getSharedPreferences("demo",
Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = mySharedPreferences.edit();
//用putString的方法保存数据
editor.putString("name", "sss");
editor.putString("age", "11");
//提交当前数据
editor.commit();</span>
3.SharedPreferences读取数据
<span style="font-size:18px;">//同样,在读取SharedPreferences数据前要实例化出一个SharedPreferences对象
SharedPreferencessharedPreferences= getSharedPreferences("demo",
Activity.MODE_PRIVATE);
// 使用getString方法获得value,注意第2个参数是value的默认值
String name =sharedPreferences.getString("name", "");
String age =sharedPreferences.getString("age", "");</span>
4.使用场景
多个activity 之间的数据传递除了可以他通过intent来传递,还可以使用SharedPreferences来共享数据的方式
————————————————
版权声明:本文为CSDN博主「数字改变世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/woyaochenggong774/article/details/49735223
四、在Activity和Service中SharedPreferences的区别
在Activity中有关SharedPreferences的代码如下:
<span style="font-family:Arial;font-size:18px;">SharedPreferences settings= getApplicationContext().getSharedPreferences("useriD", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("useriD", userID);//这里的userId是动态获取的。
editor.commit();</span>
在service中SharedPreferences的代码是这样的:
<span style="font-family:Arial;font-size:18px;">String ip;
SharedPreferences myip ;
myip = getApplicationContext().getSharedPreferences("useriD", Context.MODE_PRIVATE);
ip = myip.getString("useriD", null);</span>
改正方案:
把Context.MODE_PRIVATE改成了Context.MODE_MULTI_PROCESS就可以了。也就是说Context.MODE_PRIVATE不支持Activity和Service之间数据同步。
————————————————
版权声明:本文为CSDN博主「彼岸花开洒落一地温热」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010272905/article/details/51754436