关于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 。

参考技术A

你那个应该只是交你读取的方法吧,代码右边不是有个代码语言吗,选一下就可以了,我下面的代码是包含了保存和读取

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 未来开发的方向探讨

文章目录

背景

本文总结了目前 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方向有:

  • 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 音视频开发技能参考

  1. 负责投屏/媒体流转框架需求开发及维护,输出高质量的代码;
  2. 负责投屏框架的核心库、SDK及Demo的开发,参与架构设计、关键技术选型等工作;
  3. 参与投屏框架的 CodeReview,以及相关技术性文档的维护和撰写;
  4. 负责投屏框架的交付缺陷解决,确保版本按时保质交付,并持续完善交付经验传承体系。
    任职要求:
  5. 计算机及相关专业,本科及以上学历,三年以上Android全职开发工作经验;
  6. 熟悉Java、C/C++,熟悉Android框架,掌握常用数据结构与算法;
  7. 熟练掌握Android平台上的开发、调试及性能优化的工具和方法,有安卓整机交付经验者优先;
  8. 熟悉音视频编码、封装及常见的流媒体协议,如AVC、HEVC、HLS、MP4、MPEG-TS、RTP/RTCP等;
  9. 熟悉视频开源项目,有WifiDisplay,FFmpeg、WebRTC等开源库相关经验者优先;

总结

Android开发的根据方向未来定位,向上则是基础框架(App),向下是系统开发(FrameWork),向左是智能硬件(车机交互),向右是大前端(跨平台)。

在工作中,我们需要的技能树是需要有交叉,便于系统性的分析、定位、解决的问题,有些技术点我们可以不用,但是不能不懂。尤其是找工作面试时,这将是对你的全面考查。我们得抽象出底层通用的技能持续学习,我们在这条技术开发的道路上,任重道远。每一个方向的扎进去,都够我们折腾好几年的。

以上是关于关于android开发的sharePreferences读取问题的主要内容,如果未能解决你的问题,请参考以下文章

关于Android 未来开发的方向探讨

关于Android 未来开发的方向探讨

关于android开发自定义view

关于Android开发中的证书和密钥等问题

关于Android开发数据存储的方式

关于Android开发的40条优化建议