美文网首页
【开发经验】安卓随记

【开发经验】安卓随记

作者: Geeny | 来源:发表于2018-09-02 22:34 被阅读22次

1. Gson实现拷贝一个类实例的数据

在Java中,一个变量持有一个实例对象时,其实这个变量是引用了这一块数据的内存数据。当我们把这个变量赋值给另一个变量时,传递的只是实例对象的数据内存地址。也就是说,之后这一个内存地址对应的数据一旦变化,两个变量的“数据”看起来也是一起变化的。

如果要实现拷贝一个对象的数据给另一个变量,有不少方法。其中之一可以用Gson互转,如下。

2. View的Tags可用于无障碍模式下的视图朗读

一个View的Tags不能作为一个View的标识,但可以对View进行备注和分类。在开发中,如果要让应用支持视障人士的使用,可以对每个View加入对应的Tags,在无障碍模式下,系统将会朗读这些标签供视障人士理解界面内容。

3. RecyclerView中实现头部或底部

如果只是实现头部和底部,中间的Item内容一致,可以利用onBindViewHolder方法参数中的position判断(0和最后一个位置),然后绑定对应的item视图。这种情况没有必要修改数据源的结构,防止一些数据错位和数据混杂的bug出现。

4. RecyclerView中实现Item内容多样化

可以建立一些viewType类,这些viewType类分别实现了每个Item类型的onCreateView、onBindViewHolder和getType方法,在RecyclerView的Adapter中存入viewType集合,最后通过位置和数据元素的类型来决定走哪个viewType的onCreatet、onBindViewHolder方法。核心思想就是——根据Item类型分离Adapter的onCreateView、onBindViewHolder方法。

5. 面向对象中单一职责原则的理解

“一个类仅有一个职责”或者“引起类变化的只有一个原因”

一个类应该在逻辑上完成一个分类上的工作职责。

比如一个Person接口,有吃早餐、吃午餐、吃晚餐、跑步和游泳五个方法,但明显,**前三个是关于吃东西,后两个关于运动**。

如果从单一职责原则上考虑,我们应该让Person类继承Eat和Sport两个接口,吃早餐、吃午餐、吃晚餐三个方法放入Eat接口,跑步和游泳放入Sport接口中。

6. Layout文件中,用tools xml命名空间域实现视图的预览功能

7. 对于Module之间的隐式调用、跳转,可以考虑用 Alibaba 开源的 ARouter

一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦。

类似Java Web的URL响应

8. 对于一些需要保密的界面,我们通过禁止截屏和录屏来保护信息。

在Activity中设置Window的FLAG_SECURE标志即可实现界面不允许截屏和录屏(在setContentView方法之前)。

9. Layout文件中,DataBing赋值里的字符串用``符号包住

10. Drawable根据分辨率匹配资源文件时的顺序

如果APP找不到对应精度的Drawable文件,会优先向精度更高的资源文件匹配,如果还匹配不到,则再向精度较低的匹配。比如mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi五种精度,xxhdpi的手机跑APP时需要A图片,就去Drawable-xxhdpi文件夹中找到A图片,匹配不到后,从其它资源文件夹寻找,顺序依次是xxxhdpi ->xhdpi -> hdpi -> mdpi。

此外,APP应用图标最好放到mipmap文件夹下,其余图片资源放在drawable文件夹下。

11. 搭架构或做大型工作时利用TODO

当我们做大型工作(比如搭建框架或重构时),暂时不能因为执着于细节而停滞代码实现的主线。这时候,我们可以借用IDE里的TODO功能,把待完成但不是急需完成的工作标记起来,之后做好了重要的代码框架,再去完成之前留了TODO的细节,使工作主次分明。

12. 创建String资源值更快的一种方法

我们知道,界面上给用户看的字符串要用String Resource文件统一管理。实际开发中,如果写layout时中途需要用到一个String,我们要从layout文件跳到String文件加一个String资源,再回来layout文件里用这个String,还需要记住刚刚新建的String的大概名字。

更快的方法有:直接在layout写我们要命名的String名字,然后IDE会标错(当然,因为目前没有这个String)。

这时候按补错快捷键。

直接补String的值。

就可以快速新建一个String了(新String默认放在String文件的最后,需要整理的话稍后再统一分类),比原来的方法方便很多。

13. 用Charles工具模拟服务器数据

Charles的Tools->local map有这样的功能。它可以在本机请求某条API时,模拟服务器对这个请求进行响应并返回对应的数据(Json)。这样,在没有服务器后台的情况下,我们也可以实现网络请求的测试。

14. 开发时对输入内容重复的地方可以考虑把内容写死

比如在做登录功能时,频繁使要输入账号和密码,这并不是很高效的方法。可以在开发中直接把账号密码写死,运行时直接点登录就可以了。

15. 使用Gsonformat插件对Json转为Java实体类

16. 前端API一旦确定进入开发,就不要再改字段名和类型了,即使是最初命名错了

17. 应该在需求分析和设计阶段列出所有API,而不是等到产品确定后边做前端开发边做后台API实现

相关文章

  • 【开发经验】安卓随记

    1. Gson实现拷贝一个类实例的数据 在Java中,一个变量持有一个实例对象时,其实这个变量是引用了这一块数据的...

  • 安卓开发1-项目目录结构与资源引用

    前言: 因为有多年iOS开发经验, 学习安卓开发比较容易, 所以被单位分配学习安卓开发任务, 在此记录每天的学习笔...

  • Snap Inc. 内推 -- 深圳月薪5万起+TOP级高端福利

    一、招聘岗位和要求 职位:安卓和iOS开发 (没有其他职位) 要求: - 安卓要求至少三年安卓工作经验 (如果是音...

  • 安卓底层开发经验

    我干了3年Android sdk开发,觉得到了瓶劲没法更进一步,于是花了一年多点时间,大概摸到点门径。根据前辈的经...

  • 安卓自定义View-画圆

    效果图 代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开发工...

  • 安卓动画样例-圆环变多变少

    效果图 代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开发工...

  • 安卓开发零基础入门系列

    本文由安卓开发007出品 ## 1.1 安卓发展历程## 1.2 安卓开发前景展望## 1.3 安卓开发入门之安装...

  • Android Gson使用详解

    Android Gson使用详解(出处: 安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户)

  • 安卓动画样例-放大缩小

    效果图 实现代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开...

  • 安卓开发个人经验

    说明 仅仅作为记录使用! (1)描述 从界面A(一个Activity)跳转到界面B(一个Activity),在界面...

网友评论

      本文标题:【开发经验】安卓随记

      本文链接:https://www.haomeiwen.com/subject/qodvwftx.html