操作文件流时,可以使用Java7中引入的语法糖,try-with-resources,优化需要关闭文件流时产生的大段try catch finally 代码.
另外对于try中和finally中同时有return时,先保存try中return中值,再处理finally,最后return 的还是try中值,不受finally中影响https://blog.csdn.net/xiangyuenacha/article/details/84234797使用监听器或回调时要注意,如果使用匿名内部类的方式创建监听器,可能会因为被系统回收而导致无法接收到回调信息。
在使用AlarmManager时,通过PendingIntent传递 Parcelable 对象时,会出现取不到数据的现象。此时可以考虑用Bundle来保存Parcelable,再将Bundle传递给PendingIntent,即可正常传递。
参见:https://blog.csdn.net/m190607070/article/details/78492887
https://blog.csdn.net/z2421309246/article/details/79454716使用.9图时,如果需要它的拉伸效果,需要将其设为imageview的background。直接设为src的话,没有拉伸效果。如果必须设为src,比如使用glide或picasso时,设置placeholder占位图时,内部会设置为src,需要配套使用scaleType 为fitXY时,才有拉伸效果。或者采用链接所示方法
添加动画监听事件时,直接使用的AnimatorListener的话,则需要实现onAnimationStart,onAnimationEnd,onAnimationRepeat多个方法。此时可以使用AnimatorListenerAdapter,只需要重写需要用到的方法即可,其他默认为空。
adb模拟手机电量。让手机电量显示百分百: adb shell dumpsys battery set level 100 使用adb命令查看电池电量信息
使用isShown()获取View的可见性。获取view可见性时,平时都是采用getVisibility方法,来判断是否为Visible。最近遇到个情景,一个view被父控件包含,平时只设置父控件为Invisible或Visible,现在为子控件添加了个功能,当子控件可见时,启用功能,不可见时测不启用该功能。此时光判断子控件的可见性是不够的,因为父控件被设为Invisible时,子控件也是不可见的,但是此时子控件调用getVisibility依然返回Visible。可以分别判断其父控件与子控件getVisibility方法,但是还有另外更好的方法。使用isShown()方法,只有当该view以及该view所有parent都VISIBLE时,才返回true。Android View的可见性检查方法
关于sharedPreference中,apply() 跟 commit() 不一样的地方是,它使用的是异步而不是同步,它会立即将更改提交到内存,然后异步提交到硬盘,并且如果失败将没有任何提示。注意:apply虽然开了子线程处理 但是activity退出时会等待写入完成 也可能造成anr,最保险的方式自己开启子线程来进行commit操作
注意:如果设备上没有可接收隐式 Intent 的应用,您的应用将在调用 startActivity() 时崩溃。如需事先验证是否存在可接收 Intent 的应用,请对 Intent 对象调用 resolveActivity()。如果结果为非空,则至少有一个应用能够处理该 Intent,并且可以安全调用 startActivity()。 如果结果为空,则您不应使用该 Intent。如有可能,您应停用调用该 Intent 的功能。官方SDK
无障碍模式,某些控件不想被识别出来
原因:为了适配无障碍模式,要求开启talkback与语音播报后,选中的部分都需要有语音提示。但是由于某些布局并未有作用,比如作为分割线等,被识别时会造成困扰,也不知道如何描述。
解决方法:对于可以描述的控件,比如菜单按钮,通过添加android:contentDescription
标签,进行描述。对于不想被识别出的控件,通过添加android:importantForAccessibility
标签,来描述是否需要被识别。
https://developer.android.com/reference/android/view/View.html#attr_android:importantForAccessibility国际化时,对应语言没有根据RTL来排列
原因:此种情况会出现在多语言混合排列的情况。比如 波斯语 采用 RTL ,英语采用LTR,这两种语言混合在一起,可能就会出现LTR的排列结果。
解决方法:可以通过 伪强字符 来解决,比如上述例子中,在字符串前加入 伪强字符 即可改变排列。
https://segmentfault.com/a/1190000003781294
https://www.ibm.com/developerworks/cn/java/j-lo-bidi/index.html?ca=dat-cn-0311
Android 冷门问题记录(20.1.15)
版权声明:本文为lqc1992原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。