首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用两个不同的SharedPreference编写代码并获得相同的结果

SharedPreference是Android中用于存储轻量级数据的一种机制。它基于键值对的形式存储数据,并且可以跨多个Activity或Fragment进行数据共享。下面我将使用两种不同的方式来编写代码,并获得相同的结果。

方式一:使用默认的SharedPreference对象

代码语言:java
复制
// 获取默认的SharedPreference对象
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);

// 使用Editor对象进行数据存储
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("key", "value");
editor.apply();

// 使用getString方法获取存储的数据
String result = sharedPreferences.getString("key", "default value");

这种方式使用了默认的SharedPreference对象,它会自动创建一个以包名为名称的XML文件来存储数据。在上述代码中,我们使用Editor对象将键值对存储到SharedPreference中,并通过getString方法获取存储的数据。

方式二:使用自定义的SharedPreference对象

代码语言:java
复制
// 创建自定义的SharedPreference对象
SharedPreferences sharedPreferences = context.getSharedPreferences("custom_pref", Context.MODE_PRIVATE);

// 使用Editor对象进行数据存储
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("key", "value");
editor.apply();

// 使用getString方法获取存储的数据
String result = sharedPreferences.getString("key", "default value");

这种方式创建了一个自定义的SharedPreference对象,我们需要指定一个名称来创建对应的XML文件。在上述代码中,我们使用Editor对象将键值对存储到自定义的SharedPreference中,并通过getString方法获取存储的数据。

两种方式的结果是相同的,都可以成功存储和获取数据。选择使用哪种方式取决于具体的需求,如果只需要简单的数据存储,可以使用默认的SharedPreference对象;如果需要更多的控制和灵活性,可以创建自定义的SharedPreference对象。

推荐的腾讯云相关产品:腾讯云移动推送

腾讯云移动推送是一种高效、稳定、可靠的移动消息推送服务,可帮助开发者快速实现消息推送功能。它提供了多种推送方式,支持个性化推送、定时推送、标签推送等功能,适用于各种移动应用场景。

产品介绍链接地址:https://cloud.tencent.com/product/tpns

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

application和sharedpreference区别

在android程序中,我们经常用intent来传递数据,但是intent传递数据类型太少了。因此我们经常通过以下两种方法来传递数据。...一.sharedpreference(用法网上有,这里不再说明) 二.application Application对象生命周期是整个程序中最长,它生命周期就等于这个程序生命周期。...因为它是全局单例,所以在不同Activity,Service中获得对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。...用法 (1)编写一个类继承Application 功能很简单,就是“设置,获取,加一”三个功能 public class MyApp extends Application { private...个人推荐使用application。因为第一sharedpreference传递数据类型有限。而且无法避免多线程访问冲突;第二如果使用真机调试的话sharedpreference文件不好查看

50420

3.数据存储

api获得sd卡真实路径,部分手机品牌会更改sd卡路径 判断sd卡是否准备就绪 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED...(), "info.txt"); 查看源代码查找获取sd卡剩余容量代码 导入Settings项目 查找“可用空间”得到 <string name="memory_available" msgid...此方法接收两个参数,第一个参数用于指定 SharedPreferences文件名称,如果指定文件不存在则会创建一个,第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE和 MODE_MULTI_PROCESS...MODE_PRIVATE仍然是默认操作模式,和直接传入 0 效果是相同,表示只有当前应用程序才可以对这个SharedPreferences文件进行读写。...PreferenceManager类中 getDefaultSharedPreferences()方法 这是一个静态方法,它接收一个 Context参数,自动使用当前应用程序包名作为前缀来命名 SharedPreferences

92270

支持跨进程单例一种实现方案

这个时候,原本设计单例,在整个应用范围来看,变成了两个单例。...两个进程内单例内部状态(变量取值)也就无法同步了,这也是这个问题核心(单例行为(方法)在不同进程是一致,内部状态会影响到行为结果)。...一 如何解决 解决数据不同步问题方法很多,简单做法有两种:持久化或者跨进程调用。 1 持久化 Android可用持久化方式有本地文件、SharedPreference和数据库这三种。...(跨进程调用情况下是在Binder线程),因为调用是同步,对返回结果没有影响,但对于需要在主线程执行逻辑来说,需要主动异步放到主线程去。...线程安全:这个是编写单例时候需要注意问题,因为任何一个线程都能够访问到这个单例,使用这个方式支持跨进程可能会放大这个问题。

2.8K100

Android 应用保存状态

Android 应用保存状态 最近开发 Android 应用中需要添加保存用户状态功能, 经过查阅 Android 文档, 保存用户状态几种方法如下: 1、 使用 Bundle 保存界面状态 Android...2、 使用 SharedPreference 保存状态 Android 推荐在 onPause 方法中使用 SharedPreference 保存状态是比较可靠, 因为 SharedPreference...SharedPreference , 但是还是推荐在 onCreate 方法中读取保存内容, 示例代码如下: protected override void OnCreate(Bundle bundle..._myButton.Text = pref.GetString("main_activity_button_text", "Nothing in state."); } 注意问题 Activity 有两个方法来创建...SharedPreference , getPreferences 和 getSharedPreferences , getPreference 创建 SharedPreference 只能在当前

87420

SharedPreference commit和apply

SharedPreference是Android开发中经常用到一个数据持久化类, 我们可以把一些需要持久化数据放到一个指定 Preference文件中,持久化到磁盘上以xml形式存储起来。...这个xml文件对于开发者来说基本算是透明,开发者只需要面对 Preference 所需要文件名。 关于SharedPreference原理可以分读和写两部分理解,今天我们先说关于写这部分。...commit和apply两个方法 总所周知Android提供了这两个方法来写入数据,一般来说写入数据步骤是这样 SharedPreferences pref = mContext.getSharedPreferences...· commit写磁盘是同步行为 · 两者在写磁盘前都会先同步写到内存缓存中 apply 流程 首先要理解 SharedPreference有一个两级缓存系统,包括了内存缓存和磁盘缓存。..., 然后用Runnable把写磁盘操作包了起来,放到一个队列中进行异步处理, 最后通知监听者数据写入完成(因为并发原因可能不一定写完磁盘) 下面是commit代码 commit 流程 public

1.1K10

Android基础总结(5)——数据存储,持久化技术

也就是说当保存一条数据时,需要给这条数据提供一个对应键,这样在读取数据时就可以通过这个键把相应值取出来。此外,SharedPreference还支持多种不同数据类型存储。...该方法接收两个参数: 第一个参数是文件名,在文件创建时候使用就是这个文件名,注意,这里指定文件名不可以包含路径,因为所有的文件都默认存储到/data/data//files...值得注意是:这些get方法均接收两个参数,第一个是String类型key,传入存储数据时使用键就可以得到相应值,第二个则是我们参数是默认值,即表示当我们传入键找不到对应值时,会以什么样默认值进行返回...SQLiteOpenHelper是一个抽象类,使用它时我们自己类必须实现其两个抽象方法onCreate(SQLiteDatabase db)方法和onUpgrade(SQLiteDatabase db...by列 having having column = value 对group by结果进行进一步约束 orderBy order by column1, column2 指定查询结果排序方式

1.2K70

三星KNOX远程静默安装漏洞深入分析报告

两个相同包名应用签名不一样不会导致覆盖安装,这样就可以避免在应用自升级时被中间人攻击,替换为恶意应用。...这段代码就是把从intent里获取这些参数存入sharedpreference里,对应本地应用目录下LaunchParameters.xml文件。...这段代码会检查数据连接,如果有更新在进行则做删除处理,然后从sharedpreference文件m.xml里获取更新地址,并且会在这个地址后加上/latest。...这里会向攻击者控制URL发送HEAD HTTP请求,请求不同状态会有a$1类来处理。这个类实现代码如下: ? ?...如果浏览器支持Intent SchemeURI,一般会分三个步骤进行处理: 1.利用Intent.parseUri解析uri,获取原始intent对象; 2.对intent对象设置过滤规则,不同浏览器有不同策略

1.3K90

Android笔记:SharedPreference中editor.apply();和editor.commit();区别

相同点: 1.二者都可提交preference修改数据 2.二者都是原子操作 区别: 1.apply没有返回值而commit返回boolean表明修改是否提交成功 2.apply是将修改数据原子提交到内存...,而后异步真正提交到硬件磁盘;而commit是同步提交到硬件磁盘,因此,在多个并发提交commit时候,他们会等待正在处理commit保存到磁盘后在操作,从而降低了效率。...而apply只是原子提交到内容,后面有调用apply函数将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率。 3.apply方法不会提示任何失败提示。...总结: 由于在一个进程中,sharedPreference是单实例,一般不会出现并发冲突,如果对提交结果不关心的话,建议使用apply,当然需要确保提交成功且有后续操作的话,还是需要用commit

62520

【Android 内存优化】Bitmap 硬盘缓存 ( Google 官方 Bitmap 示例 | DiskLruCache 开源库 | 代码示例 )

1、二级缓存代码示例 2、调用工具类代码示例 八、源码及资源下载 在上一篇博客 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引用 | 引用队列 | 针对不同...Android 版本开发不同 Bitmap 复用策略 | 工具类代码 ) 中 , 使用 LruCache 缓存内存数据 , 同时兼顾 Bitmap 内存复用 , 使用弱引用 Bitmap 对象集合维护...- 推荐使用 JakeWharton 开源库 DiskLruCache , 点击上述连接即可进入工程界面 ; 点击 GitHub 界面右侧 Release 界面 , 下载发布 Release 版本...( Android 4.4 , 19 平台 ) 以后代码中 , * 只要被解码生成 Bitmap 对象字节大小 ( 缩放后 ) * 小于等于 inBitmap 字节大小..., 就可以复用成功 ; * * Android 4.4 之前 Bitmap 复用情况 : ( 比较苛刻 ) * 在 KITKAT 之前代码中 , 被解码图像必须是

75130

请不要滥用SharedPreference

但是,SharedPreference并不是万能,如果把它用在不合适使用场景,那么将会带来灾难性后果;本文将讲述一些SharedPreference使用误区。...之所以说SharedPreference(下文简称sp)是一种轻量级存储方式,是它设计所决定:sp在创建时候会把整个文件全部加载进内存,如果你sp文件比较大,那么会带来两个严重问题: 第一次从...我们先用sp进行读取,然后用直接把它丢json文件,直接读取并且解析;json使用代码如下: public int getValueByJson(Context context, String key...在小米1S上结果如下: 时间 json sp Mi 1S 80 38 Nexus5X 3.5 6.5 这个JSON读取还没有做任何优化,提升潜力巨大!...多次edit多次apply 我见过这样使用代码: SharedPreferences sp = getSharedPreferences("test", MODE_PRIVATE); sp.edit(

1.4K40

请不要滥用SharedPreference

但是,SharedPreference并不是万能,如果把它用在不合适使用场景,那么将会带来灾难性后果;本文将讲述一些SharedPreference使用误区。...之所以说SharedPreference(下文简称sp)是一种轻量级存储方式,是它设计所决定:sp在创建时候会把整个文件全部加载进内存,如果你sp文件比较大,那么会带来两个严重问题: 第一次从...我们先用sp进行读取,然后用直接把它丢json文件,直接读取并且解析;json使用代码如下: public int getValueByJson(Context context, String key...在小米1S上结果如下: 时间 json sp Mi 1S 80 38 Nexus5X 3.5 6.5 这个JSON读取还没有做任何优化,提升潜力巨大!...多次edit多次apply 我见过这样使用代码: SharedPreferences sp = getSharedPreferences("test", MODE_PRIVATE); sp.edit(

57910

Android多进程刨根问底

但是也有一个办法能让不同apk进行共享文件,那就是通过shareUID,它可以使不同apk使用相同 user ID。...这种就比较复杂了,我在网上找了一些资料,找到一个fork普通进程: //主要代码 long add(long x,long y) { //fpid表示fork函数返回值 pid_t...因为每个进程都会分配到一个独立虚拟机,而不同虚拟机在内存分配上有不同地址空间,所以在不同进程,也就是不同虚拟机中访问同一个类对象会产生多个副本。 线程同步机制完全失效。...这是因为系统对于SharedPreference有读写缓存策略,也就是在内存中有一份SharedPreference文件缓存,涉及到内存了,那肯定在多进程中就不那么可靠了。...每个业务模块创建自己AIDL接口实现此接口,然后向服务端提供自己唯一标识和其对应Binder对象.

55710

用 Map 为你属性做代理

引子 话说,Kotlin 里面有两个语法用到了 by 这个关键字,一个是接口代理,一个是属性代理(不知道这俩东西是神马,去 https://kotlincn.net 查官方文档)。...lastPage 尽管看上去就是一个很普通属性,不过如果我们对它进行写操作,那么值会被直接存入 SharedPreference 当中,读操作也会从 SharedPreference 当中读取。...最要命是,官方提供 SharedPreference api 在使用过程中,不仅难用,而且还经常因为丢掉 commit 而导致错误。...当然不,仔细看看 MutableMap 和 Map getValue 有什么不同?...如果你觉得有,那么我就像知道你哪儿来自信保证HashMap 有默认值呢? HashMap 确实没有默认值,那我定义一个 MapWithDefault 总可以了吧? 结果。。结果。。。。

56720

sharedPreference入门

/********************2016年5月6日 更新**************************************/ 知乎:Android 如何实现判断用户首次使用,比如首次使用时展示软件使用教程.../**************************************************************************/ 为了保存带有特殊字符数据到文件中,谷歌提供SharedPreference...通过Context对象getSharedPreference(name,mode)方法得到SharedPreference对象,name参数是文件名称,mode参数是上一节那些模式。...读取sp很简单,同样获取SP对象,调用SP对象getString(key,defaultValue),应用程序配置信息都可以利用这个来保存。不同类型值保存时,节点就是自身类型。...java代码: /** * 保存用户名和方法业务方法 * @param context 上下文 * @param username 用户名 * @param

44730

安卓开发_数据存储技术_SharedPreferences类

有两种方式可以获得SharedPreferences对象 1、getSharedPreferences():  如果需要多个使用名称来区分共享文件,则可以使用该方法,其第一个参数就是共享文件名称。...对于使用同一个名称获得多个SharedPreferences引用,其指向同一个对象 2、getPreferences():              如果activity仅需要一个共享文件,则可以使用该方法...向SharedPreferences类中增加值方法如下 1、调用SharedPreferences类edit()方法获得SharedPreferences对象 2、调用诸如putString(),putInt...()等方法增加相应类型值 3、使用commit()方法提交新值 从SharedPreferences类中读取值时,主要使用该类中定义getXXX()方法。...下面用一个简单例子来练习SharedPreferences类使用 首先看布局文件: 1 <?xml version="1.0" encoding="utf-8"?

1.1K80

一起看 IO | Jetpack 组件新特性

,它是一个包含超过 100 个库、工具及指南套件,以帮助开发者遵循最佳实践、减少模板代码,以及编写不同 Android 版本和设备上表现一致代码,从而使您可以专注于在应用中实现独特功能。...这一改变可以为未来与 Kotlin 相关改进打下基础,同时又与之前使用 Java 编程语言编写版本二进制兼容。...库使用情况、如何配合依赖注入使用 DataStore,以及如何从 SharedPreference 迁移至 Proto DataStore。...所有的 Navigation 组件现已使用 Kotlin 重写,使用泛型改进了类可空性,例如 NavType 子类。...下面我们详细说说 JankStats 三个主要功能: 识别卡顿 : JankStats 使用内置启发式算法确定卡顿发生时机,使用该信息得知何时发布卡顿报告,从而使开发者可以获得有关这些问题信息

3.1K20
领券