红米Note调用系统相机拍照后应用崩溃问题分析解决

这几天突然发现红米Note手机只要调用系统相机进行拍照时,我的应用必定会崩溃。这个问题折腾了好久才解决,现在记录下问题跟踪解决的过程和方法。(红米Note手机的系统太坑爹了%>_<%)

####解决办法
请直接从第7条开始看,1~5条为我的问题处理过程,第6条为问题原因分析。

Android基础之TableLayout中TextView文本无法自动换行

最近项目中用到了TableLayout布局,发现该布局下的TextView控件的内容无法达到自动换行的效果,布局代码如下:

Android基础之Activity生命周期

之前一直对Activity的生命周期不是很清楚,感觉很模糊。前两天也看了下任玉刚书里对Activity生命周期的讲解,今天特意写了个程序验证了下Activity的生命周期内各个回调的执行情况,为了避免多段时日又忘了,干脆对这次的理解总结下,俗话说好记性不如烂笔头,没事的时候可以回过头来再看看。

我们先来看一张非常经典的Activity生命周期流程图:

简单实用的Android ORM框架TigerDB

TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构。

该库主要包括如下几个要点:

  1. 根据实体对象自动建表、新增字段(SQLite不支持删除字段列)
  2. 支持注解配置表名、字段名、字段默认值、主键是否自增长以及哪些字段不作为数据表中的映射字段
  3. 直接映射实体对象到SQLite数据库,实现一行代码对SQLite数据库增删改查
  4. 支持在SDCard中新建数据库db
  5. 解决在onCreate,onUpgrade中执行数据库其他操作时出现的异常(java.lang.IllegalStateException: getDatabase called recursively)
  6. 支持原生SQL语句操作数据库

Android基础之点击两次返回键退出程序

Android应用中退出应用程序通常有两种做法,一种是使用选择对话框询问用户是否退出应用程序,另外一种是快速点击返回按钮两次然后退出应用。其中第二种实现方式较为普遍,而且我个人认为这种方式用户体验性要好点。下面,我介绍两种常用的点击两次返回退出应用的实现方式。

Android调用相机无法执行onActivityResult或data为null

最近项目中调用系统相机时遇到了这么个问题:红米手机无法执行onActivityResult回调,部分华为手机无法获取到照片数据,最后各种分析,各种网上搜索资料折腾了好久,最后终于把问题解决,当看到问题的最终原因时,我也是醉了,简直就是坑爹坑大发了。

最开始用红米手机调用系统相机的时,当我拍照完成点击那个勾勾始终无法返回到前面的界面上,也就是无法调用onActivityResult函数取到拍照的照片,在网上搜索了一圈,没找到解决办法,都说是红米的系统问题,无法解决,项目比较紧张,刚好客户的手机全部是统一型号的华为荣耀6Plus,这个问题丢着暂时没管了。
后来现场同事批量测试机器时,发现有3台手机可以拍照,但是在onActivityResult回调中获取到的照片数据为null,但是其他的同型号手机又没这个问题,这问题看着真是坑爹啊。

Android基础之解压zip中文乱码处理

####乱码原因分析
一般我们使用的Windows系统外部文件默认都是GBK编码方式,Mac系统默认的好像是UTF-8(同事的电脑就是,不知道其他人的是不是),Linux的没验证过,这里我讨论的是Windows下打包的zip文件。

Java中自带的ZipEntry解压缩的编码方式是UTF-8,而且没有可以自定义编码方式的接口,所以当我们使用UTF-8编码去解压缩GBK编码的文件的时,解压缩出来的中文部分当然是乱码,所以Mac上打包的zip用Java的自带解压缩接口解压出来是没有问题的。

Android基础之shape使用

Android中的shape标签用于描述形状,可以在布局文件layout和选择器selector中使用,它有6个子标签,具体如下:

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×