遇到Android N的第一个小坑

Google 2016 I/O大会正如火如荼,正好这两天拿到一部工程机,就测试一下现有的应用在Android N (Preview 1)上的表现。一上发现框架部份出问题,整个应用无法正常启动。

Debug跟踪了一会,发现问题竟然出在Cursor.getBlog这个接口上。如下是Android M(6.0.1_r10)的源码:


/**    * Returns the value of the requested column as a byte array.    *    *

The result and whether this method throws an exception when the

* column value is null or the column type is not a blob type is

* implementation-defined.

*

* @param columnIndex the zero-based index of the target column.

* @return the value of that column as a byte array.

*/

byte[] getBlob(int columnIndex);

在前面的版本如果数据表中这项值没有赋值的话,getBlob是会返回null的。之前我们的代码要根据这个值为null或者返回的byte[]长度为0时重新获取一次数据,而这次在Android N的手机上发现,数据表中这一项没有赋值的话,getBlob会返回长度为1的默认byte[](byte[0]的值为0),从而导致后面重新获取数据的逻辑一直不被执行。

你可能感兴趣的:(遇到Android N的第一个小坑)