今天早上摸鱼翻旧代码,突然看见张津俞去年写的安卓项目。好家伙,满屏都是标红的报错,跟放鞭炮似的!血压蹭就上来了,这兄弟踩的坑比我老家门口的水沟还多。干脆撸起袖子,把他那些经典错误全揪出来遛遛,顺便把我的填坑经验倒一倒。
一、开局雷击:安装包死活装不上
张津俞第一次打包APK给我测试,手机直接弹安装失败,连理由都不给。我一看他发来的截图:好嘛*里明晃晃写着minSdkVersion 28!我抽屉里那台测试机还是安卓7.0的系统,当场吐血三升。赶紧让他把minSdkVersion改成21,又手动勾上“允许安装未知来源应用”,这破包才像便秘一样挤进手机。
二、界面崩成马赛克
刚打开APP就听见他哀嚎:“师兄!我首页按钮叠成俄罗斯方块了!”跑过去一瞅,ConstraintLayout里七八个按钮全堆在左上角。原来这哥们懒得拖约束线,直接写了个wrap_content就想跑路。我扯着他耳朵教他:每个控件必须至少拉一条横线+一条竖线钉死在屏幕上!看他吭哧吭哧给按钮绑上约束,界面终于像军训队列站整齐了。
三、点个按钮APP就闪退
最绝的是点击事件。张津俞信誓旦旦说按钮绑定了,结果手指刚碰到屏幕,APP直接表演原地消失。翻他代码差点笑岔气:
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
- findViewById写在onCreate外面,控件还没出生就急着找人家
- onClick方法名拼错成onClik,少了个c
- 控件ID写的是R.*_login(buttom什么鬼!)
当场按着他脑袋改完这三处,按钮终于活过来了。
四、列表滑两下就卡死
这兄弟做的新闻列表,滑到第三条必卡成PPT。打开Profiler一看内存:好家伙,每次滚动都重新加载图片!原来他在adapter里直接塞了Glide加载代码,连缓存策略都没配。赶紧给他电脑拷了我的万能adapter模板,加上.diskCacheStrategy(*),列表立马滑得跟德芙一样丝滑。
五、输入法把界面顶飞了
登录页刚调通他又哭:“键盘弹出来把我的登录按钮顶到外太空去了!”过去一看,整个布局被输入法顶得七扭八歪。骂骂咧咧打开*,给他activity加上android:windowSoftInputMode="adjustResize"。键盘升起那刻,按钮稳稳从底部浮上来,张津俞眼珠子都快瞪出来了。
补刀:权限忘干净
做到上传头像功能时,这憨憨拍照完相册死活刷不出新图片。我瞥了眼代码:好嘛写了个寂寞的权限申请!只在manifest里声明了WRITE_EXTERNAL_STORAGE,运行时压根没动态请求。把他手机设置里的权限记录调出来一看:果然显示“从未询问”。翻出我祖传的权限工具类甩给他,拍照完相册终于刷新了。
折腾到下班,张津俞电脑屏幕上贴满了黄色便签条,写着“约束!ID!权限!缓存!”。拍着他肩膀说:“安卓这玩意儿,踩的坑都是叠起来的,掉过一次就长记性了!”这货边保存代码边嘟囔:“今晚就把这些便签拍下来当手机壁纸...”