
android基础相关
文章平均质量分 55
java语言,app开发相关
android软件架构员
分享日常软件架构相关的工作感悟和日常技巧
展开
-
改造mvp为mvvm模式
交互事件的处理放到fragment里了(fragment也主要是调用viewmodel来处理),view只负责提供页面数据的展示。数据控制给到 ViewModel ,viewmodel 处理完后通过 MutableLiveData传递对象到 fragment里,fragment现在负责了view的交互事件,以及生命周期变化时候对view的控制,以及对 viewmodel的数据的更新。2 这个主要没有通过框架对代码的流程和编写进行限制,我在考虑是否在搞一层限制以下。整体改造后,感觉清晰了很多。原创 2024-02-01 15:47:15 · 327 阅读 · 0 评论 -
写下关于生命周期的注意点
onDetachedFromWindow() 当view离开附着的窗口时触发,即是在activity的ondestroy的时候调用(最后的释放资源的机会)onWindowVisibilityChanged(int) 当窗口中包含的可见的view发生变化时触发(可以释放资源)注释2的时候 才是可以看到的时候,不过我们可以监听 onWindowVisibilityChanged 就行了。1 fragment中的show()和hide()的时候,会调用onHiddenChanged()方法。原创 2024-01-29 18:23:29 · 429 阅读 · 0 评论 -
导航相关知识梳理
所以没有比较深的难点,但可以从开发效率,app性能,app稳定性 三个方面来评价自己的app是否优秀(目前对比高德公版app)。然后是具体的专业知识相关的总结,我这边主要是引导,巡航,主页,以及提供第三方接口。百度地图,高德地图,百度地图相关的虽然比较全面,每个模块都有了解,但目前市面上应该不需要百度地图的定制开发了,所以很可惜,跳过。先说开发效率,我接触了好几种代码结构(框架),接下来我会对比他们,以及我自己弄的代码结构,累了,歇一歇。接下来轮到了专业知识---》android知识--》通用的知识。原创 2024-01-15 15:08:27 · 637 阅读 · 1 评论 -
android基础知识补漏
2 自定义view相关的知识(主要是布局相关的,因为view相关的一般 onMeasure,onLayout,消息事件几乎用不到)依赖注入 这个看别人用的这么留,我是否可以搞一套自己的依赖注入模板,或者模式 就叫 注解模板模式 目前我还没用这玩意写过代码。1 activity fragment和view的绘制的生命周期(绘制的一些重要节点结合的activity的生命周期)主要是activitythread相关的(wms,ams感觉用处不大,我实际用不到,就没法总结了)泛型,反射,依赖注入。原创 2024-01-24 17:58:48 · 727 阅读 · 0 评论 -
android tts播报破音解决方案汇总
tts放入app进程会受当前app的业务影响,导致tts 不稳定,尤其是导航app,大量的cpu,内存占用是常有的事,可单独放到一个独立进程里,并且启动个前台服务提高优先级。//类似生产者,消费者的一个读写类(每写一次,都给一次取的机会,目的是不耽误取出播报的节奏)//等待先写入数据一定的数据,防止进来就破音。一种是 开始的那帧数据进行音量从零渐进增加到当前音量,结束的那几帧数据进行音量从当前音量降到零。//系统一次处理的数据块的最小值,小于的话,就会破音。//需先等待最小的间隔时间,保持播报节奏。原创 2024-01-29 10:34:20 · 1588 阅读 · 0 评论 -
android卡顿流程分析总结
android wms 卡顿相关的知识总结原创 2024-03-25 11:56:09 · 1024 阅读 · 0 评论 -
android 导航app 稳定性问题总结
因为回忆及查阅自己的资料时候,发现既有也有,怕是遗漏,无法分类的很多哦。(我曾在自己的项目上跑monkey的时候,跑了个脚本监控,感觉还是之前的单例太多了,当时适当减少了一些单例的生命周期)1 内存优化及泄露 2 anr,native相关问题总结 3 app启动问题,冻屏,黑屏总结 4 日常高频问题总结。一分类就很多,整完这些就要处理 android相关问题总结,java相关问题总结部分,尽量分开来,别混在一起。网上能搜到的,就不要写了,加个关键字,链接啥的就过了。接下来看下泄露吧,搞得最多的就是泄露了。原创 2024-01-22 14:31:09 · 971 阅读 · 0 评论 -
启动优化总结
很久以前有个项目进行了启动优化,当时自己弄了好久现在拿出来看下,确实很简单,看了下网上的一些启动框架确实没法比,不过很适合我们导航项目,记录下来,以后慢慢改进。原创 2024-01-31 17:47:07 · 369 阅读 · 0 评论 -
导航知识梳理2
哪里好呢,view的事情自己处理,view的异步操作或包含model的代码交给viewmodel,viewmodel处理好了后,数据自身直接通过底层机制(livedata,ObservableField)通知到view层。再看高德demo的项目,activity + 多fragment ,也是通过Stack来管理,但好在将这个放到了底层,且fragment天然就支持分栈管理,支持动态的添加,替换删除。如果有空的话,我倒是可以搞下,基于这个搞个最终版,再加上我之前的一些想法都可以放进来。原创 2024-01-18 14:17:08 · 457 阅读 · 1 评论 -
代码设计思路总结
突然想到了代码设计思想这里是要写篇文章记录一下这个方面也是需要持续跟进优化的,这里不讲六大原则和框架原理,主要是总结实际开发中的感悟和积累我觉得可以根据需求的大小可以针对性的整理一下。原创 2024-01-25 22:08:21 · 772 阅读 · 0 评论 -
android 导航app稳定性总结2
查看activityrecord 启动log(往往都有对应的对象的id,看下是否同一个对象id),看下启动了几次,也可查看activity生命周期log(但有时候居然只打印一个的生命周期)就会导致启动失败 (关键字:deny, denied,FileNotFoundException),而且下次再进来的时候就好了,往往是系统为了优化启动时间,明明没有准备好。由于我们app是系统app,基本上常驻,这样的话,会导致当前的view虽然显示出来的,但处理数据还是给了老的view上面了,用户怎么点击,滑动。原创 2024-01-22 16:21:11 · 455 阅读 · 0 评论 -
android gradle 使用总结
productFlavors : 多渠道,多项目区分 ,可以修改代码,指定java,资源文件路径,及动态区分不同flavor的代码编写。buildType : 构建类型,debug(本地调试) ,release(服务区编译或打包给系统集成的版本)resConfigs :指定我们需要的strings资源,包括过滤 drawable文件夹的资源等。而外面的声明(repositories,dependencies)是项目需要使用的资源。gradle脚本自身需要使用的资源,会优先加载,原创 2024-01-24 16:25:10 · 614 阅读 · 0 评论 -
框架技巧整理
日常总结用原创 2024-02-19 17:01:27 · 237 阅读 · 0 评论 -
导航相关知识3
要么pathresult删除后,取出来的pathinfo要自己释放,别乱释放,别释放了还拿着他查找 pathid,这个sdk直接抛出异常才对,居然还返回了个默认值。还有主页和对外接口呢,明天应该差不多,(接下来要稳定性,app性能,以及 android知识--》通用的知识)得抓紧了。POIForRequest,pathinfo,NaviPath,都需要主动的及时的调用对应的释放方法,否则内存泄露。2 切备选:有手动,和自己走上去,这个到还好,但是和 删除回调一起,容易出错。用户操作:这块暂时没想到啥。原创 2024-01-18 18:19:14 · 451 阅读 · 1 评论 -
代码设计思路总结2
一个主列表处理类,一个子列表处理类,一个列表类管理(因为主列表和子列表有些操作是不一致的,需要一个类似adapter的类来转换和管理)这个后期就会感觉代码比较乱了,这个时候不得不重新设计了,但我并没有把设计好的传上去,后期是不能大改动的,所以下次得长记性。以后做这类功能的时候,还是要提前将功能能独立的对立,能统一管控的就加个专门管控的类。嗯,没有用到啥模式,也没用到啥框架,但我感觉有用,应该还可以再优化,有空时候再看看。这个一开始的设计比较简单,一个处理选项卡数据的类,一个处理搜索数据的类。原创 2024-01-26 18:02:51 · 311 阅读 · 0 评论 -
图片优化总结
如果不进行缓存,尽管看到的是同一张图片文件,但是使用BitmapFactory类的方法来实例化出来的Bitmap,是不同的Bitmap对象。图片复用主要就是指的复用内存块,不需要在重新给这个bitmap申请一块新的内存,避免了一次内存的分配和回收,从而改善了运行效率。Bitmap内存占用 ≈ 像素数据总大小 = 图片宽 x 图片高 x(设备分辨率/资源目录分辨率)² x 每个像素的字节大小。BitmapFactory获取Bitmap图片以及解决OOM异常。缓存通用的Bitmap对象。原创 2024-03-07 17:37:39 · 428 阅读 · 0 评论 -
android多线程总结
记录自己日常对多线程相关的问题的思考流程和解决问题的模式原创 2024-03-10 10:07:01 · 455 阅读 · 0 评论 -
自定义android音频焦点
厂商一般都会对音频焦点进行自定义改造,自定义android 音频焦点交互模型原创 2024-03-24 19:57:18 · 1127 阅读 · 0 评论 -
android recyclerview 总结
android recyclerview的常用知识点汇总原创 2024-03-21 16:23:20 · 1308 阅读 · 0 评论 -
自定义view相关总结:
关于android 自定义view的日常注意点总结原创 2024-03-19 14:49:33 · 615 阅读 · 0 评论 -
线程的认识阶段
线程的几个阶段的认识1 会 用 Synchronized,会使用threadpool,使用队列顺序执行来避免多线程2 熟练使用 wait,notify,sleep,join,interuput3 不同场景下使用 不同的同步方法,还有Synchronized(非公平)<lock< ReentrantLock(可重入) ,Volatile,ThreadLocal,java.util.concurrent包里面的api...原创 2021-01-27 15:17:00 · 91 阅读 · 0 评论 -
java 过滤所有特殊字符
public static String StringFilter(String str) throws PatternSyntaxException {// 只允许字母和数字 // String regEx ="[^a-zA-Z0-9]";// 清除掉所有特殊字符 String regEx="[^0-9a-zA-Z\\u4E00-\\u9FA5]"; Pattern p = Pattern.compile(regEx); Matcher m = p...原创 2021-09-26 18:55:22 · 4230 阅读 · 0 评论 -
android 集合总结
常见集合面试题总结原创 2024-03-26 10:44:02 · 225 阅读 · 0 评论 -
java内部类和引用传递的理解
日常中的疑惑,不能让他随意溜走。原创 2024-04-13 06:42:50 · 272 阅读 · 0 评论 -
android 进程,线程调度的区别
关于进程和线程的调度相关的接口有何区别原创 2024-07-05 18:28:27 · 226 阅读 · 0 评论 -
异步加载任务的工具类
可以放入多个并行的任务,任务完成通知当前线程回调 onComplete。原创 2024-01-31 14:38:50 · 346 阅读 · 0 评论 -
可以发消息的子线程handler封装类
刚解了个bug,写下来:项目中需要用到不停的接收消息并分发的需要但有些消息需要主线程,有些需要子线程,就是不能在当前线程(系统服务,不能直接在该服务里操作,崩溃的话,会导致该服务也崩溃)这里封装了个支持发送主线程,子线程消息的类。用法简单:像使用主线程的handler一样处理即可。原创 2024-01-25 18:11:26 · 1270 阅读 · 0 评论 -
android 防抖工具类,经纬度检查工具类
[0-9]|[1-9][0-9]|1[0-7][0-9]|180)\\.([0-9]{6}):[0-9]|[1-9][0-9]|1[0-7][0-9]|180)\\.([0-9]{6}):[0-9]|[1-8][0-9]|90)\\.([0-9]{6}):[0-9]|[1-8][0-9]|90)\\.([0-9]{6})/**只校验正数 0-90.000000 0-180.000000 范围内。/**只校验正数 0-180.000000 范围内。/**只校验正数 0-90.000000 范围内。原创 2024-01-23 16:44:55 · 1043 阅读 · 0 评论 -
android 线程池的管理工具类
封装了各种类型的线程池,方便直接使用看下有哪些类型:默认线程池,搜索模块专用线程池,网络请求专用线程池,U盘更新,同步SDK读写操作线程池,日志打印使用线程池看下有哪些优先级级别。原创 2024-01-23 15:57:43 · 2745 阅读 · 0 评论 -
播报卡顿,破音 问题总结
播报出现卡顿,怎么办,如何做到永不卡顿,设备不卡死,播报就不卡顿原创 2022-09-09 15:32:18 · 2178 阅读 · 0 评论 -
fragment启动优化
优化加载页面原创 2022-08-24 16:13:03 · 770 阅读 · 0 评论 -
android 权限问题
android app创建的默认权限是 rwxrwx---对应的账户所在组有读写权限但我们系统给了rwx------的权限 导致所在组没有权限,下一次删除后重新安装 对应账户的uid发生了变化,导致当前用户发生变化,原来创建的文件无法访问。需要强制改下权限:先创建再给权限Runtime.getRuntime().exec("chmod 777 " + file);...原创 2021-08-31 16:50:23 · 223 阅读 · 0 评论 -
okhttp 源码分析
看了下okhttp ,突然有个疑问,同步操作,只是把call 放到 队列里,竟然没有 异步操作里面的执行操作。那他是如何执行call里面的东西的呢原来 这个队列只是方便停止,清除等操作,不一定是用来执行的真正的执行是在下面的责任链里面去做的是不是很特别...原创 2021-08-25 15:18:32 · 124 阅读 · 0 评论 -
android RecyclerView缓存流程
recyclerview 有多重緩存,那么如何缓存的呢:1 显示根据 position 直接找到对应的viewhold,这个意思就是上次缓存的viewhold 也是对应这个位置的(且数据没有改动),所以啥都不用动,直接拿来用2 根据itemid 来找到对应的viewhold(hasstableids 需为true)3 直接根据viewtype来找到对应的viewhold所以如果是直接根据viewtype来获取的话,就会出现 viewhold里面的数据不一定对应的情况,需要给出明确的默认值.原创 2021-08-24 15:59:48 · 218 阅读 · 0 评论 -
复杂对象如何实现跨进程传递
消息传递:需要实现seriliaze接口或pascal接口1 已经实现了的view有基本布局,linearlayout,relativelayout,等四个,还有textview,imageview,button等也是实现了pascal接口的2 将对象及里面的对象实现接口,比如hashmap 就有实现的方案,map里面的key ,value及里面的对象也是要实现 序列化接口的3 特殊的surface 也是可以实现的,这样一个基于surface的控件也是可以显示的,surfaceview 通过原创 2021-08-20 17:05:46 · 280 阅读 · 0 评论 -
app开发总结
面对多页面,单服务常用的一种写法是将多个页面共同的操作抽出来,然后弄个manager 统一管理,比如设置跳转页面,activity跳转fragment,或者跳转view统一管理view ,或者统一管理fragement,或者直接抽象一个新的类,统一管理这个类。由于新的类生命周期最少,没有,manager也最复杂,适合深度定制,定制流程。期间一般要配合 工厂,单例,观察等模式...原创 2021-08-19 14:06:58 · 216 阅读 · 0 评论