掘友等级
获得徽章 0
jym,现在广州Android行情如何
,提桶一个月了
#每天一个知识点# Android开发,项目中的文字还是应该老老实实写在values\strings里,不然后期来个应用多语言的需求,改动会很浪费时间
#每天一个知识点#
当使用如下代码生成四位随机数时,如果两次生成随机数之间的时间间隔太短,种子可能没有改变,从而导致生成的随机数重复。
val random = Random(System.currentTimeMillis())
val code: Int = random.nextInt(1000, 10000)
为了避免上述情况出现,可以使用纳秒级别的时间戳作为种子来创建 Random 对象:
val random = Random(System.nanoTime())
val code: Int = random.nextInt(1000, 10000)
#每天一个知识点# 在 Android 的高版本中,应用程序可以通过自动识别系统设置的语言来自动切换应用程序内部的语言。只要在 values 目录下设置了对应的语言字符串资源文件,应用程序将根据系统语言自动加载相应的字符串资源。但是如果想在应用内单独设置语言,而不与系统语言相同,需要自己实现语言更换并保存语言设置
#每天一个知识点#
Flow是google官方提供的一套基于kotlin协程的响应式编程模型,它与RxJava的使用类似,但相比之下Flow使用起来更简单,另外Flow作用在协程内,可以与协程的生命周期绑定,当协程取消时,Flow也会被取消,避免了内存泄漏风险。
#每天一个知识点#
android:gravity:是对view组件本身来说的,是用来设置组件本身的内容应该显示在组件的什么位置,默认值是左侧。
android:layout_gravity:是相对于包含该元素的父元素来说的,设置该元素在父元素的什么位置。
#每天一个知识点# Android EditText点击可以弹出软键盘,但是弹出的时候EditText会失去焦点,尝试了很多很多的方法,最后发现原因可能是:拉起软键盘时布局下方的button或其他控价顶起来了,导致view重绘而丢失焦点
所以在manifest文件中对应的activity下加:
android:windowSoftInputMode="adjustNothing"
可以解决这个问题
#每天一个知识点#
kotlin协程,如果需要指定协程运行的线程,就需要指定Dispatchers ,常用的有三种:
• Dispatchers.Main:Android中的主线程,可以直接操作UI
• Dispatchers.IO:针对磁盘和网络IO进行了优化,适合IO密集型的任务,比如:读写文件,操作数据库以及网络请求
• Dispatchers.Default:适合CPU密集型的任务,比如解析JSON文件,排序一个较大的list
#每天一个知识点# 实际开发中,同一个Android项目运行在不同品牌的手机上,基本运行完美,但有小部分手机会报错,应该是是厂商的系统版本的原因吧?这种bug只能通过多机型测试来解决了吗?
#每天一个知识点# Android开发中,ANR的分类:
1、Input dispatching timed out:输入时间分发超过5s,包括按键和触屏事件。
2、Broadcast of Intent:前台广播需要在10s内完成,后台广播需要在60s内完成。
3、executing service:前台服务需要在20s内完成,后台则需要在200s内完成。
4、ContentProvider:几乎非常少见,publish执行未在10s内完成。
5、Context.startForegroundService() did not then call Service.startForeground():应用调用startForegroundService,然后5s内未调用startForeground出现ANR或者Crash,此问题属于应用未适配Android版本sdk。
下一页