今天发现了一个在对象序列化时的错误。
1 | E/Parcel: Class not found when unmarshalling: com.lijia.study.InventoryDetail |
今天发现了一个在对象序列化时的错误。
1 | E/Parcel: Class not found when unmarshalling: com.lijia.study.InventoryDetail |
最近在做收银机相关的开发,涉及到双屏异显的一些东西,之前也没有接触过,在查阅一番资料之后,把功能走通了,这里小记一下。
Presentation 是一种特殊的对话框,主要用于在另外一块屏幕上显示内容。默认为克隆模式,即副屏显示和正屏一样的内容。当需要显示不同内容时,需要自定义 Presentation,并为其指定一个 Display。这里随便定义一个 Presentation:
1 | public class MyPresentation extends Presentation { |
前段时间终于下定决心自己实践 RxJava,Retrofit 等当前十分流行的库,利用 Gank.io 的公共 API,做一个自己的 Gank 客户端。项目地址: Gank。只要有闲暇时间便会写写代码,慢慢完善。期间有一些小的知识点,但是却很实用,这里便列一下。关于 RxJava,Retrofit 目前学习还不是很深入,这里便不展开了。
现在与服务端通信通常都是Json,但是服务器返回的Json串的key是服务端自己的命名规则(可能是中文key,或者大写开头),我们直接通过Gson解析就必须一一对应,但是这样的命名在Java里很不友好。
那么就可以通过@SerializedName注解给Bean类进行“重命名”,这样在解析的时候便可以直接利用我们自己的命名规则命名变量了。
举个栗子:http://gank.io/api/day/2017/08/03
返回的数据包含Android,福利等不符合Java规范的key,那么就可以这样:
1 | public class DataResults { |
如此便可以直接通过Gson解析,并且变量名是以我们自己的命名规则进行命令的了。
more >>Github 逛久了,相信大家都会有很多star,虽然很多star后面再也不会看的。但是只要有那么一丁点的可能回头看,我们还是需要将自己的star整理一下,不然感觉都是无从下手。那么问题便来了:如何管理 Github 上的 star ?
答案便是 Astral。这是我偶然发现的一个网站,它可以用来给 Github 上的 star 分类。
具体界面是这样子的:
界面很简单,打开就能直接上手用,整理了一个下午,终于将自己的 200 多个 star 全部清理个便,分了几个 TAG,后面再回顾的时候便会方便多了。
普遍的 Android 开发可以理解为移动端界面开发,那么界面自然是重中之重。当设计师给到你设计稿时,你便需要将设计稿中的东西用代码做出来。
项目开发中便遇到了这样一个设计稿:
这算是一个很基本的对话框了,没什么难度。写这篇文章主要是为了记一下图中关闭按钮的实现。
这个关闭按钮算是再简单不过的一个图标了,那么要如何实现呢?当然可以找到设计师要切图。但是这里我想尝试一下 Android 中的 SVG,顺便也是减轻设计师的工作量,经常劳烦别人也不是什么好事。
List、Map等这类数据结构在日常开发中的使用不可谓不多,经常会有遍历的同时进行修改的情况。例如:
1 | Integer[] numbers = new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; |
这段代码在执行的时候便会抛出异常:
1 | Exception in thread "main" java.util.ConcurrentModificationException |
这个异常出现通常是遍历一个集合的同时,在修改这个集合。看到next方法:
1 | public E next() { |
然后看到checkForComodification:
1 | final void checkForComodification() { |
即当modCount 与 expectedModCount 不相等时,会抛 ConcurrentModificationException 异常。其实很早之前就会碰到这个问题,使用Iterator进行遍历和操作就不会出现这个问题了,但是一直没有深究其原因。
新手引导是每个 App 都具备的。如果新手引导直接用 Activity 来做,可能就会比较繁杂和冗余。所以一般都是 ViewPager 来实现。那么便会有 2 个问题:
昨天写关于 git 的文章的时候,需要来回切分支,而且 bash 也看不到当前是哪个分支,得不停git branch来看,显得十分麻烦。于是便不得不逼着自己一把,来熟悉一波zsh了。
同事有用zsh的,而且鼎力推荐,因为目前的工作和学习与命令行的交集不是很深,所以一直没有开始用。最近发现bash相比zsh确实是难用许多,便只能硬着头皮来学习了。之所以是硬着头皮,是因为自己对 Linux 系统不是很熟悉,虽然现在是在用,但是对于 Linux 的很多特性都不是很了解,命令行、Shell 脚本算是 Linux 一大特色。
zsh有着强大的功能,但是其配置也是异常复杂,于是 Github 上便有了这样的一个库:oh-my-zsh,oh-my-zsh是为了简化zsh的配置而提供的一个配置模板,可以更好的管理zsh的各项配置。可以看到它有 55k 的 star,可见其火爆程度。现在才来接触,显得挺惭愧的。
关于oh-my-zsh的安装直接照着 github 中的README一步一步来就好了。就提醒一点,安装完之后需要注销掉用户,重启也可以,然后再重新登录,才可以看到zsh。
相信选择选择绝大部分开发者都使用的 Git 来进行版本控制,关于 Git 比较基本的东西就不说了,这里主要记录一下我用到的 2 个较为进阶一点的命令。
场景:假定现在有一个分支develop/1.0.0,该分支用于发布1.0.0版本的包,develop/1.0.0依赖一个 module,该 module 的版本与之对应也是1.0.0,就在将要打包的时候, develop 分支新增了一个提交,这个提交依赖 module 的1.0.1版本,可能是由于同事之间的沟通不足导致这种问题,不需要提交的被提交了。在发布1.0.0版本的包时,是不应该包含最新的提交的。那么可以怎么样做呢?
revert 意为回退。可以使用git revert指令,回退最新的一次提交。
举个例子:
初始化一个 git 仓库,添加一个文件git,做一次提交init。
然后编辑git文件,做一次提交feature A。
准备以当前节点打包时,又多了一次提交feature B,此次提交是不需要包含到此次打包的代码里的。
tag:
缺失模块。
1、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
2、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: true
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true