ADeveloperH Blog

Meet a better self !

Android 周边技术分享


常用小知识

1 系统语言切换相关

Android 7.0多语言支持开发浅析

Android 项目开发填坑记 - 获取系统语言(兼容7.0)

Android中监听语言变化的两种方式

改变系统语言后,重新进入处于后台的APP,会重走onCreate方法: Android如何去处理运行时配置的改变?

1.1 阿拉伯语适配(RTL)

双向性

Android RTL 及小语种 适配

Android阿拉伯适配rtl

2 SharedPreference 导致 ANR

ANR 如下(主要集中在 5.0 和 5.1 三星等手机上):

"main" prio=5 tid=1 Waiting
  | group="main" sCount=1 dsCount=0 obj=0x77751000 self=0xb4427800
  | sysTid=3377 nice=-4 cgrp=default sched=0/0 handle=0xb6fdebec
  | state=S schedstat=( 0 0 0 ) utm=94718 stm=70129 core=2 HZ=100
  | stack=0xbe4f6000-0xbe4f8000 stackSize=8MB
  | held mutexes=
  at java.lang.Object.wait! (Native method)
- waiting on <0x0bbd135f> (a java.lang.Object)
  at java.lang.Thread.parkFor (Thread.java:1220)
- locked <0x0bbd135f> (a java.lang.Object)
  at sun.misc.Unsafe.park (Unsafe.java:299)
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:813)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly (AbstractQueuedSynchronizer.java:973)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly (AbstractQueuedSynchronizer.java:1281)
  at java.util.concurrent.CountDownLatch.await (CountDownLatch.java:202)
  at android.app.SharedPreferencesImpl$EditorImpl$1.run (SharedPreferencesImpl.java:363)
  at android.app.QueuedWork.waitToFinish (QueuedWork.java:88)
  at android.app.ActivityThread.handleStopActivity (ActivityThread.java:4615)
  at android.app.ActivityThread.access$1300 (ActivityThread.java:211)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1734)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:145)
  at android.app.ActivityThread.main (ActivityThread.java:6946)
  at java.lang.reflect.Method.invoke! (Native method)
  at java.lang.reflect.Method.invoke (Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1404)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199)

SharedPreference如何阻塞主线程

How to analyze ANR in sharedPreferences

SharedPreferences的apply和Commit方法的那些坑

SharedPreferences调用导致的ANR分析

对 SharedPreferences 再多一点了解

Android SharedPreferences的理解与使用

深入理解 Android 中的 SharedPreferences

彻底搞懂 SharedPreferences

官:SharedPreferences.Editor

3 Manifest 中属性相关

AndroidManifest.xml文件–Application详解

(转) Android 让应用手动管理应用的数据目录

Android Activity标签属性

4 Glide 相关

4.1 Glide 加载应用图标

Manage all your Glides in a single class with GlideAppModule on Android

Glide4.x加载应用图标

5 Dialog 相关

5.1 自定义的AlertDialog无法弹出键盘

自定义的AlertDialog无法弹出键盘

最近的文章

APK 瘦身

1 国内应用市场那些你不知道的 APK 瘦身,让你的 APK 更小如何将 APK 大小减少 6M 的我的Android进阶之旅——>Android APP终极瘦身指南Android 瘦身之道 —- so文件【腾讯Bugly干货分享】Redex初探与Interdex:Andorid冷启动优化压缩代码和资源2 Google Play Store2.1 split apk (Build multiple APKs)Build multiple APKs 官网ABI 管理根据 abi 进行分...…

继续阅读
更早的文章

leetcode 初级算法相关

领扣 算法初级题库 1 数组1.1 从排序数组中删除重复项问题描述:从排序数组中删除重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,...…

继续阅读