踩坑记录

1、有些版本的手机如果selector的某一种状态不设置颜色,会出现黑色背景
2、判断equels时最好以确定的对象判断不确定的对象:如“yyy”.equles()
3、修改控件alpha值时,如果背景是selector,不能修改透明度
4、谨慎使用Log,尤其是Log打印时使用字符串拼接
5、对于json库的选择倾向于jackson
6、对于图片资源尽量压缩,图标资源能分解就分解,使用代码绘制出来的简单图标组合使用
7、阿拉伯和波斯语中出现其他语言字符是不会自动右对齐,需要针对阿拉伯语配置layout文件
8、AsyncTask在Android3.0也即SDK/API 11和以后的版本是不会同时执行5个任务的,可自定义线程池
9、Android 7.0以后file://格式的URI的话,应用会抛出FileUriExposedException,使用 FileProvider方式
10、Android 6以后的权限管理要谨记用时申请
11、辅助任务的使用处理特权
12、列表类控件如ListView recyclerview尽量滑动停止再加载资源
13、Lint(清理资源、安全检查、layout优化等)Findbugs(检查java代码缺陷)
14、依靠广播来实现跨进程通讯是不可靠的,有延时或收不到
15、设置完语言可以重启主页面或刷新当前界面recreate()
16、用一个哈希表存储Bitmap对象的软引用,作为内存缓存,并在适当时机掉用其recycle()3.0以上版本Bitmap对象可以通过垃圾回收机制完全销毁,理论上不用再调用recycle()。
17、SDK 24 下的NotificationManager.java的notifyAsUser出现了以下的修改,强迫6.0及以上系统下在使用notification时一定要传入small icon。
18、在23及以前的RecyclerView,会默认忽略ViewHolder的ItemView的layoutParams,直接用wrap_content进行处理;但在24下,默认layoutParams会对其进行支持,如果在写item的xml时使用了match_parent,会让该item的width(height)等于RecyclerView的对应width(height),写死的dp值也会被优先读取。这当然是一种好的优化,使得过去很多需要嵌套来实现的一些“撑开”item的操作直接写在root view即可,但由于机制的修改,不可避免会出现适配的问题(宽高与想象中严重不一致)。适配方案就是将所有item的xml文件的root的layout_width和layout_height都改为wrap content,就变成了之前一模一样的效果
19、布局时要考虑 导航菜单栏(NavigationView)是可收缩和上推的
20、团队开发时,如果负责到公共模块要注意和其他模块进度配合,最好在git使用子模块管理
21、java没有无符号整形概念,和其他语言平台通讯时千万记住,字节大小端
22、Android 使用加密再转base64码上传 

23、多线程时不要遗忘还有Callable和Future

24、一旦ViewStub visible/inflated,则ViewStub将从视图框架中移除,其id stub_import 也会失效ViewStub被绘制完成的layout文件取代,并且该layout文件的root view的id是android:inflatedId指定的id panel_import,root view的布局和ViewStub视图的布局保持一致。但有时时候在有的手机上还是会找不到android:inflatedId

25、Git subModule时针对子模块也要重新设置git远程路径 git remote remove origin
git remote add origin ssh://[email protected]:7999/~XXXXXXX/XXXXXX.git
26、防止反射破坏单例模式,构造函数调用时进行处理,当构造函数第2次被调用时抛出异常

你可能感兴趣的:(android,坑,java)