1. 在使用Toast时,无法自定义Toast显示时间
Toast.makeText(Context, Message, [Toast.LENGTH_LONG|Toast.LENGTH_SHORT]).show();
Toast.LENGTH_LONG/Toast.LENGTH_SHORT在源码中的值为1和0,所以makeText方法的第三个参数不能设置为自定义的时间毫秒数。
Toast的setDuration方法只能传Toast.LENGTH_LONG或Toast.LENGTH_SHORT,其他值无意义或者不生效
2. Fragment快速频繁切换时生命周期
- onHiddenChange有可能不执行;
- onStart和onStop可能不执行,只执行onResume和onPause;
- onDestory方法不会立即执行,切换到最终页面后可能需要等待一段时间才会执行onDestory,或者有可能始终不执行onDestory
3. try-catch-finally模块
try{
//TODO
return new Object();
} catch(IOException e) {
//TODO
return 1==2;
} catch(ProtocolException pe) {
//TODO
return false;
} finally {
//TODO
}
- 无论有没有catch异常,finally都会执行;
- 有return也会执行finally;
- 没有catch到异常时,finally中的代码会在new Object()后,在return之前执行;
- catch到异常1时,finally中的代码会在执行1==2保存false的值之后,在return false之前执行;
- catch到异常2时,finally中的代码会在return false之前执行.
4. 类型转换
- Integer.valueOf会创建Integer对象
- Integer.parseInt只做转换为int操作
5. 静态static
- 静态块static { … }在类加载后立刻执行
- 静态方法在调用时执行
6. switch…case..问题
- case后的值必须是final类型,不可改变,否则报错
7. fresco使用
fresco的图片需要指定大小,否则会出现加载图片后不显示的问题
8. handler的postDelay操作
所有的postDelay操作都要有对应的remove,否则很容易造成内存泄露或者逻辑出错
9. 华为前置摄像头奔溃问题
一般为Camera.Parameter设置错误,部分华为手机表现在focusMode参数设置,华为手机前置摄像头仅支持一种focusMode,所以需要先获取设备所支持的focusMode参数列表再进行设置。
10. 魅族手机调用系统api拍照
部分魅族手机调用系统api拍照,传值到系统相机的照片路径必须是静态字符串
11. 高德地图sdk
高德地图sdk定位获取的地址数据包含“省”“市”“区”三级;通过高德地图sdk提供的api查到的行政区的“省”“市”“区”三级中“市”与定位获取到的“市”不一致,例如:定位获取到为:北京市 北京市 朝阳区,而行政区api则是:北京市 北京市市辖区
朝阳区,导致通过无法通过定位数据准确查询行政区;行政区查询发现,港澳台及少数地域的行政区级别有差别,港澳只有“省”“区”两级,台只有“省”一级,新疆省铁门关市部分只有“省”“市”两级
12. 权限问题
targetSdkVersion 为23及以上需要在使用某些权限时做申请
13. 摄像头相关
Camera mCamera = Camera.open();
//创建size的正确方式
Camera.Size size = mCamera.new Size(600, 800);
14.魅族手机rom的锅
部分魅族手机对弱引用内存回收的很迅速,出现的问题就是弱引用的变量数据丢失。
例:在使用高德定位时,创建了一个定位监听器的接口,弱引用。在定位成功后发现位置未刷新,后经证实为弱引用的位置监听接口在定位数据返回前被回收。
魅族手机rom定制了TextView的ellipsize属性为end时只显示两个点,例:
1234567899 在maxLength为5的TextView中在魅族会显示为12345..
1234567899 在maxLength为5的TextView中在其他手机显示为12345...