配置信息的存储和读取

简介: 一般游戏涉及到的配置文件信息都以kv的形式存在且数量非常之少,这个时候搞一个sqlite的数据库显然有点奢侈,搞个配置文件合适一点,但是android的dev guide显然提供出来一套更合适的做法,SharedPreferences。 从存储的模式上来说 SharedPreferences实际上

一般游戏涉及到的配置文件信息都以kv的形式存在且数量非常之少,这个时候搞一个sqlite的数据库显然有点奢侈,搞个配置文件合适一点,但是android的dev guide显然提供出来一套更合适的做法,SharedPreferences。
从存储的模式上来说 SharedPreferences实际上是系统专门提供的kv存储模式,针对不同的application提供私有的存储,虽说私有但是还是可以通过Provider来向别的程序提供这类私有数据。。好吧,我们不需要关注这些。。
SharedPreferences提供保存任意类型的私有数据:boolean,float,int,long,当然还有string,即便你的app进程被kill掉,这些数据依然完好,这个正是我们需要的。
你可以通过getSharedPreferences()方法或者getPreferences()方法来获得这个对象,当然前者需要你提供针对的app名称作为第一参数。
实例化这个对象之后可以通过这个对象调用类似getBoolean()的方法来获得结果,而写的步骤会复杂一点点。
你需要通过这个对象的edit()方法获得一个SharedPreferences.Editor对象,再使用后者的putBoolean()类似的方法来写入,最后需要调用commit()方法来提交你的私有数据。具体的实例如下,摘自android-sdk/docs/guide/topics/data/data-storage.html
[cc lang=”java”]public class Calc extends Activity {
public static final String PREFS_NAME = “MyPrefsFile”;

@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .

// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean(“silentMode”, false);
setSilent(silent);
}

@Override
protected void onStop(){
super.onStop();

// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(“silentMode”, mSilentMode);

// Commit the edits!
editor.commit();
}
}[/cc]


转载自:https://coolex.info/blog/242.html

目录
相关文章
|
索引
SAP ABAP——内表(五)【追加内表数据—INSERT】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的追加内表数据的INSERT相关语句,包括使用关键字追加和使用索引追加以及不同类型内表使用INSERT追加数据的不同效果
1880 1
SAP ABAP——内表(五)【追加内表数据—INSERT】
|
6月前
|
人工智能 弹性计算 安全
OpenClaw有什么用?本地/阿里云部署+百炼集成+个股分析实战盈利及避坑指南
你是否早已厌倦AI仅能“纸上谈兵”——写方案、改文字却无法落地执行?真正的AI生产力,应该是你设定目标,它全程闭环完成。OpenClaw(Clawdbot)作为首个开源本地部署的AI Agent平台,彻底打破了这一局限:它不是聊天机器人,而是能自动抓取新闻、分拣邮件、监控代码、甚至搭建个股分析模型的“数字员工”,连接飞书、微信等20+平台,数据全程本地化,完全开源可定制。
1270 160
|
网络协议 安全 物联网
《复杂环境下IPv6地址规划与子网划分全攻略》
随着网络环境日益复杂及设备数量激增,IPv6以其超大地址空间和即插即用优势成为网络变革的关键。本文深入探讨IPv6地址规划与子网划分的挑战与方法,包括夯实基础知识、遵循层次性与高效性原则、应对物联网与云计算等特殊场景需求,以及验证优化的重要性。通过合理规划与科学划分,可构建高效、稳定且安全的IPv6网络,为未来发展奠定基础。
1027 19
|
11月前
|
机器学习/深度学习 测试技术
先SFT后RL但是效果不佳?你可能没用好“离线专家数据”!
通义实验室Trinity-RFT团队提出CHORD框架,通过动态融合SFT与RL,解决大模型训练中“越学越差”“顾此失彼”等问题。该框架引入细粒度Token级权重与软过渡机制,实现从模仿到超越的高效学习,在数学推理与通用任务上均显著提升性能,相关代码已开源。
1223 0
|
人工智能 自然语言处理 前端开发
100个降噪蓝牙耳机免费领,用通义灵码从 0 开始打造一个完整APP
打开手机,录制下你完成的代码效果,发布到你的社交媒体,前 100 个@玺哥超Carry、@通义灵码的粉丝,可以免费获得一个降噪蓝牙耳机。
7129 16
|
SQL 安全 关系型数据库
AWVS扫描在线站点实现安全评估
AWVS扫描在线站点实现安全评估
|
监控 前端开发 关系型数据库
搭建直播网站技术层面准备全流程
搭建直播网站涉及技术选型、开发与部署。技术选型包括服务器端(Java/Go、MySQL/PostgreSQL、Redis、阿里云OSS等)、前端(React/Vue.js、React Native/Flutter)、流媒体技术(RTMP、HLS、WebRTC、H.264/AAC)和CDN加速。系统架构设计涵盖前端、后端、流媒体服务器及数据库,使用负载均衡器分发流量,包含用户认证、推拉流管理、实时通信等功能模块。开发流程包括环境搭建、API实现、WebSocket通信、页面开发及流媒体配置。部署阶段涉及服务器搭建、Docker容器化、CDN配置、日志监控及CI/CD自动化部署。
3925 13
|
Linux Python
【Azure Function】Python Function部署到Azure后报错No module named '_cffi_backend'
ERROR: Error: No module named '_cffi_backend', Cannot find module. Please check the requirements.txt file for the missing module.
517 2
|
存储 安全 UED
插上U盘后提示格式化怎么解决?4个方法帮你
在使用u盘的时候,很多人都可能遇到过电脑插入U盘后系统弹出提示要求将U盘格式化。面对这个问题,如果U盘里有重要的数据,会让人感到不知所措。今天的内容就和大家一起讨论一下这个问题的原因和解决方法,并提供恢复U盘数据的方法。