首页
学习
活动
专区
工具
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文件不好查看

52920

3.数据存储

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

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

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

    2.9K100

    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 只能在当前的

    92720

    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.3K10

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

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

    1.4K90

    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.3K70

    请不要滥用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(

    60110

    请不要滥用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.5K40

    【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 之前的代码中 , 被解码的图像必须是

    88830

    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的。

    72720

    Android多进程刨根问底

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

    64910

    用 Map 为你的属性做代理

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

    59220

    安卓开发_数据存储技术_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

    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

    46830

    一起看 IO | Jetpack 组件的新特性

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

    3.2K20
    领券