关于android开发的sharePreferences读取问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于android开发的sharePreferences读取问题相关的知识,希望对你有一定的参考价值。
private void loadSharePreferences()
SharePreferences sharePreferences=getSharePreferences(PREFERENCE_NAME,MOD);
String name=sharePreferences.getString(“Name”,“Tom");
int age=sharePreferences.getInt("Age",20);
这种读取方式是不是有问题啊,例如这个getInt("Age",20),20这个值都知道了还读个P啊,从教科书上抄下来的,求解释参数,顺便问下百度提问如何插入代码。
int age=sharePreferences.getInt("Age",20);
这句话的意思是先从sharePreferences里面找key 为 “Age” 的数据, 如果有,说明你事先保存过, 那就取“Age”对应的值,也就是你事先保存过的值 ,如果没找到key 为“Age” 的,最后的 int age 将被赋予你给的默认值20 ,也就是说那仅仅是一个默认值,只有在从sp对象里取值失败的时候才会使用。
插入也就是保存,也比较简单:
得到sp 的方法一样:
SharePreferences sharePreferences = getSharePreferences(PREFERENCE_NAME,MOD);sharePreferences.edit().putInt("Age",28).commit();
比上代码:如果你之前保存过“Age" 并且保存的值上28, 那么 int age=sharePreferences.getInt("Age",20);
这里age 的值肯定是28 ,而不是20 。
你那个应该只是交你读取的方法吧,代码右边不是有个代码语言吗,选一下就可以了,我下面的代码是包含了保存和读取
public boolean ondrain_flag = true;public boolean flag = true;
public int heated = 0;
public String mac = "";
private Configuration()
/**
* 单态
*/
public static Configuration getInstance()
if (instance == null)
instance = new Configuration();
return instance;
/**
* 储存配置文件信息
*
* @param context
* 上下文
*/
public void saveMe(Context context)
SharedPreferences preferences = context.getSharedPreferences(
SETTING_INFOS, Context.MODE_PRIVATE);
Editor preferencesEditor = preferences.edit();
preferencesEditor.putBoolean("flag", flag);
preferencesEditor.putInt("heated", heated);
preferencesEditor.putString("mac", mac);
preferencesEditor.commit();
/**
* 获取配置文件信息
*
* @param context
* 上下文
*/
public void readMe(Context context)
SharedPreferences preferences = context.getSharedPreferences(
SETTING_INFOS, Context.MODE_PRIVATE);
flag = preferences.getBoolean("flag", flag);
heated = preferences.getInt("heatede",
heated);
mac = preferences.getString("mac", mac);
参考技术B 这个sharePreferences.getInt他是根据age来取值,在age里取到值了就返还那个值;第一次或者清除数据了,在age里取不到数值的话,就返还默认的20,所以20是取不到数据的默认值。 参考技术C SharePreferences
存储数据也是按照 key-vlaue键值对方式存储 那么取值时候通过 getString("key",""); 的方式来取个你说的getInt("Age",20),20 这个是当 “Age” 这个key 没有对应的值时候由你决定分配一个默认值。
关于Android 未来开发的方向探讨
文章目录
- 背景
- Anroid 应用开发工程师技能参考
- Android 基础设施建设技能参考
- Android 逆向开发工程师技能参考
- Android Framework工程师技能参考(车载系统、系统开发方向)
- Android 性能优化工程师技能参考
- Android 音视频开发技能参考
- 总结
背景
本文总结了目前 Android开发的从业方向和所需要的技能。
Android 目前的开发方向主要基于Android的特性和体系架构来定,开源的特性,出现了Android应用架构开发、Android FrameWork开发,Android TV开发、Android 串口开发、车载智能座仓开发等等。
目标岗位出现了:Android应用开发、Android性能优化、Android系统开发、Android系统安全开发。
再精准匹配可能就是对应的业务线和产品功能方向细分了,如音视频开发、智能硬件如车机人机交互开发、工具类产品开发等等等。
Android开发的技术架构演进的过程,也从 MVC 到 MVP/MVI,然后转向 MVVM,最后是 MVVM 和 MVI 的混合。
先来一张 Google官方提供的经典分层架构图:
从下往上依次分为Linux内核、HAL、系统Native库和Android运行时环境、Java 框架层以及应用层这5层架构,其中每一层都包含大量的子模块或子系统。
关于这张图的进一步解读可以参考:
根据上面这张图 我们大概可以得到以下几个方向
目前的Android方向有:
-
Android 应用开发(框架开发、架构开发、基础设施建设)
如参与手机端、平板端、智能机顶盒TV端的迭代功能需求开发、Android平台设施建设与性能优化等等。
-
Andriod跨平台开发(React Native、Flutter开发等)
根据公司业务规划或当前公司的人力考虑,整个项目或者某些功能模块直接用跨平台开发技术来开发。
-
Android 安全方向(逆向分析、安全渗透等)
Anroid 应用开发工程师技能参考
Android 基础设施建设技能参考
基础平台设施的建设的同学可谓全栈开发,不但需要做基础通用组件(基本上是业务上开发难搞的通用组件),还要关注性能优化,还得关注研发体系的持续构建、稳定性、安全性等等。
关于基础设施建设的意义和实践可进一步参考:
Android 逆向开发工程师技能参考
1.2年以上android rom开发/移植经验,熟悉java/c/c++;
2.熟悉Android框架及工作机制、ROM修改及开发;
3.熟悉linux kernel 、驱动编程、bootloader、电源管理方案;
4.熟悉Android hal层的原理和架构,熟悉高通或者mtk芯片方案商对于wifi、ril的 hal层架构和实现优先;
5.熟悉Android服务、Zygote、JNI、内存管理机制等;
6.具有从Framework层到应用层app的垂直开发能力,熟悉android原生APP的开发;
7.学习能力强,强烈的责任心,具有较好的沟通能力、抗压力能力、创新能力及团队合作精神。
岗位职责:
1、负责热门APP的风控对抗以及加解密算法分析;
2、处理平时的逆向分析任务。
任职要求:
1、计算机、软件工程或相关专业,1年以上相关工作经验;
2、熟悉Thumb、ARM、ARM64汇编指令,熟悉smali指令,熟悉C/C++/Java一门语言,对逆向工程有浓厚兴趣;
3、熟悉dex,elf文件结构;
3、熟悉常见Hook工具,了解其原理,并且能够编写插件辅助分析;
4、熟悉Android常见加密算法,交互协议分析;
5、熟悉常见加固的脱壳技巧,脱壳原理。
加分项:
1、熟悉JS逆向;
2、熟悉浏览器插件开发。
Android Framework工程师技能参考(车载系统、系统开发方向)
工作职责
1、负责Android框架层的架构方案设计及优化
2、负责多平台框架层方案整合,并Leading推动方案落地
3、 负责新功能导入评估以及框架搭建
4、负责疑难问题的攻关解决,包含窗口显示异常、死机冻屏等
5、跟进Android平台的演进方向,追踪业界相关的技术动态,并负责架构领域技术洞察
任职要求
1、有3年及以上Android开发经验,1年以上架构相关工作经验,同时涉及Qualcomm、MTK者优先
2、具备系统架构设计能力,主导/参与过大型架构设计及优化者优先
3、 对WMS、AMS、PMS、Binder、HAL等有深入的理解,能够优化调整相关逻辑
4、 有整合多平台方案者,深入理解Plugin以及映射机制优先
5、有Kernel相关知识背景者优先
6、自驱力强,深入FWK知识域的学习,能够形成体系
7、精通Java语言,需要有C++、python语言背景
8、 全日制本科及以上学历,数学分析、计算机、软件开发等相关专业优先
1、负责Android稳定性优化和技术攻关,打造极致用户体验;
2、负责调查和解决各种影响用户体验的疑难问题,如JE、Native Crash、ANR、SWT、冻屏/黑屏、内存泄漏等;
3、参与开发稳定性各类工具,提升工作效率;
职位要求
1、5年以上Android客户端或系统Framework开发经验;
2、熟练掌握Java和C+++开发语言;
3、扎实的编程能力,熟悉多线程和网络编程,了解操作系统原理及计算机体系架构;
4、优秀的分析和解决问题能力,熟练使用lldb/gdb,熟悉ARM汇编。
5、加分项:熟悉虚拟机(ART、Dalvik)、内存优化、系统C库、Linux Kernel主要模块(内存、调度、IO等)的技术架构
Android 性能优化工程师技能参考
1.有丰富的性能调优的项目经验,熟练使用常用的性能分析工具分析系统性能(A:systrace,top,vmstat,trace等工具;B:分析过两种及以上如下问题:偶发卡顿,掉帧,benchmark, 冻屏,老化,游戏体验,开关机速度,App启退慢,内存泄漏,整机慢等);
2.熟悉Android Framework,至少精通AMS, WMS / View, PMS, 显示系统中一个子模块;
3.对Linux底层了解(lmk,lmkd要熟悉;Cgroup,IO,MM,FS,Net等或其中一种较为了解);
4.对java有丰富的编码经验, 熟悉c/c++/python更佳;
Android 音视频开发技能参考
- 负责投屏/媒体流转框架需求开发及维护,输出高质量的代码;
- 负责投屏框架的核心库、SDK及Demo的开发,参与架构设计、关键技术选型等工作;
- 参与投屏框架的 CodeReview,以及相关技术性文档的维护和撰写;
- 负责投屏框架的交付缺陷解决,确保版本按时保质交付,并持续完善交付经验传承体系。
任职要求:- 计算机及相关专业,本科及以上学历,三年以上Android全职开发工作经验;
- 熟悉Java、C/C++,熟悉Android框架,掌握常用数据结构与算法;
- 熟练掌握Android平台上的开发、调试及性能优化的工具和方法,有安卓整机交付经验者优先;
- 熟悉音视频编码、封装及常见的流媒体协议,如AVC、HEVC、HLS、MP4、MPEG-TS、RTP/RTCP等;
- 熟悉视频开源项目,有WifiDisplay,FFmpeg、WebRTC等开源库相关经验者优先;
总结
Android开发的根据方向未来定位,向上则是基础框架(App),向下是系统开发(FrameWork),向左是智能硬件(车机交互),向右是大前端(跨平台)。
在工作中,我们需要的技能树是需要有交叉,便于系统性的分析、定位、解决的问题,有些技术点我们可以不用,但是不能不懂。尤其是找工作面试时,这将是对你的全面考查。我们得抽象出底层通用的技能持续学习,我们在这条技术开发的道路上,任重道远。每一个方向的扎进去,都够我们折腾好几年的。
以上是关于关于android开发的sharePreferences读取问题的主要内容,如果未能解决你的问题,请参考以下文章