Android 冷门问题记录(11.30)

来源:互联网 发布:周立功单片机应用技巧 编辑:程序博客网 时间:2024/06/05 20:16
  1. adb模拟手机电量。让手机电量显示百分百: adb shell dumpsys battery set level 100 使用adb命令查看电池电量信息

  2. 使用isShown()获取View的可见性。获取view可见性时,平时都是采用getVisibility方法,来判断是否为Visible。最近遇到个情景,一个view被父控件包含,平时只设置父控件为Invisible或Visible,现在为子控件添加了个功能,当子控件可见时,启用功能,不可见时测不启用该功能。此时光判断子控件的可见性是不够的,因为父控件被设为Invisible时,子控件也是不可见的,但是此时子控件调用getVisibility依然返回Visible。可以分别判断其父控件与子控件getVisibility方法,但是还有另外更好的方法。使用isShown()方法,只有当该view以及该view所有parent都VISIBLE时,才返回true。Android View的可见性检查方法

  3. 关于sharedPreference中,apply() 跟 commit() 不一样的地方是,它使用的是异步而不是同步,它会立即将更改提交到内存,然后异步提交到硬盘,并且如果失败将没有任何提示。注意:apply虽然开了子线程处理 但是activity退出时会等待写入完成 也可能造成anr,最保险的方式自己开启子线程来进行commit操作

  4. 注意:如果设备上没有可接收隐式 Intent 的应用,您的应用将在调用 startActivity() 时崩溃。如需事先验证是否存在可接收 Intent 的应用,请对 Intent 对象调用 resolveActivity()。如果结果为非空,则至少有一个应用能够处理该 Intent,并且可以安全调用 startActivity()。 如果结果为空,则您不应使用该 Intent。如有可能,您应停用调用该 Intent 的功能。官方SDK

  5. 无障碍模式,某些控件不想被识别出来
    原因:为了适配无障碍模式,要求开启talkback与语音播报后,选中的部分都需要有语音提示。但是由于某些布局并未有作用,比如作为分割线等,被识别时会造成困扰,也不知道如何描述。
    解决方法:对于可以描述的控件,比如菜单按钮,通过添加android:contentDescription 标签,进行描述。对于不想被识别出的控件,通过添加 android:importantForAccessibility 标签,来描述是否需要被识别。
    https://developer.android.com/reference/android/view/View.html#attr_android:importantForAccessibility

  6. 国际化时,对应语言没有根据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