android
文章平均质量分 80
一只菜橘猫
这个作者很懒,什么都没留下…
展开
-
oom监测及LeakCanary原理
Dalvik:Linear Alloc:匿名共享内存Zygote Space:Alloc Space :每个进程 独占ART:Non Moving SpaceZygote SpaceAlloc SpaceImage Space :预加载的类信息Large Obj Space:大对象bitmapMAT主要用到了incoming references查找引用对象outgoing references查找被谁引用浅堆与深堆Sha...原创 2021-11-23 15:51:15 · 1397 阅读 · 0 评论 -
service、IntentService
startService()(n)生命周期执行的方法依次是:第二个括号代表执行几次onCreate()(1) ==> onStartCommand()(n);调用stopService()(n),onDestroy()(1)。调用bindService开启服务,生命周期执行的方法依次是:1、onBind返回值是null;onCreate() ==> onBind()(1);调用unbindService结束服务,生命周期执行onDestroy方法,并且unbindService方原创 2021-09-09 10:41:59 · 285 阅读 · 0 评论 -
glide
子线程 : Application作用域主线程 :非Application作用域 生成空白的Fragment图解如下:1、glide 单例2、FragmentManager 保存空白的fragment,通过tag获取。3、LifecycleListener 接口,onStart()/onStop/onDestroy4、Lifecycle方法有addListener(LifecycleListener listener)、removeListener(LifecycleLis...原创 2021-09-08 14:48:13 · 2482 阅读 · 0 评论 -
WorkManager
WorkManager对比AsyncTask, ThreadPool的优势:WorkManager里面的任务在应用退出之后还可以继续执行。AsyncTask, ThreadPool里面的任务在应用退出之后不会执行。WorkManager自动选用JobScheduler, 或是AlarmManager来实现后台任务。使用WorkManager的一些任务示例:上载日志、将过滤器应用于图像并保存图像、定期将本地数据与网络同步等。优点包括:支持异步一次性和定期任务 支持网络条件,存储空间和充电状态原创 2021-09-01 11:31:43 · 381 阅读 · 0 评论 -
databinding、room。。。
加载xml标签会解析生成2份app/intermediates/data_binding_layout_info_type_merge/out命名规则(原命名-layout.xml)主要通过包名位置、tag(对应第二个xml的位置)、expression(来确定绑定的位置)。及以后apt的生成。originalTag是你原来的设置的tagapp/intermediates/incremental/mergeDebugResources/stripped.dir/layo...原创 2021-08-27 13:02:09 · 216 阅读 · 0 评论 -
dagger2、hilt注入
模型使用时候的问题1、单例 必须的在全局定义2、component 不允许同时注册2个类。需要把2个合并到一个component中,代码如下第二个注入的类需要修改之前的注入方式下面是2个component合并类中的使用合并后不要单独用他们的注解@Singleton单例模式,自己定义注解实现单利如下3、编译很耗时4、多个相同注解用 @Named5、支持懒加载类lazy(单例)provider<A>6、注入都写到 di包下面(规范不强..原创 2021-08-23 11:01:43 · 171 阅读 · 0 评论 -
okhttp介绍
支持HTTP/2并允许对同一主机的所有请求共享一个套接字(http.1-2 webscoket) 通过连接池,减少了请求延迟 默认通过GZip压缩数据 响应缓存, 避免了重复请求的网络 请求失败自动重试主机的其他ip, 自动重定向运行流程分发器dispatcher: 内部维护队列与线程池, 完成请求调配;拦截器interceptors: 五大默认拦截器完成整个请求过程。call.enqueue() 后会执行RealCall 里面执行 enqueue()->里面会 new As.原创 2021-08-18 11:24:43 · 4545 阅读 · 0 评论 -
sql讲解
.timer on 执行sql显示查询时间SQLite Glob 语法SQLite 的 **GLOB** 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。- 星号 (*)- 问号 (?)星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。| 语句...翻译 2021-08-11 10:08:31 · 236 阅读 · 0 评论 -
crash检测方案
java crash 实现UncaughtExceptionHandler接口,然后注册ndk crash(BreakPad)利用liunx信号机制,Linux信号一方面用于正常的进程间通信和同步,另一方面它还负责监控系统异常及中断。当应用程序运行异常时,Linux内核将产生错误信号并通知当前进程。当前进程在接收到该错误信号后,可以有三种不同的处理方式。忽略该信号; 捕捉该信号并执行对应的信号处理函数(信号处理程序); 执行该信号的缺省操作(如终止进程);当Linux应用程序在执行时发生严原创 2021-08-10 10:44:54 · 460 阅读 · 0 评论 -
Apk瘦身
1、android size analyzer 插件2、移除未用资源 minifyEnabled/shrinkResources 使用keep.xml不被删除3、Analyse->Run in...->unuserd Rescurses4、设置文字资源android defaultConfig resConfigs "zh-rCN"5、abiFilters "armeabi-v7a"6、png转svg、tint 系统(new->Vector asset)7、使用微信AndRes原创 2021-08-09 14:07:43 · 68 阅读 · 0 评论 -
电量与网络优化
电量优化减少操作:您的应用是否存在可删减的多余操作?例如,是否可以缓存已下载的数据,而不是每次重新下载数据?推迟操作:应用是否需要立即执行某项操作?例如,是否可以等到设备充电后或者Wifi连接时(通常情况下使用移动网络要比WIFI更耗电 )再将数据备份到云端?合并操作:工作是否可以批处理,而不是多次将设备置于活动状态?比如和服务器请求不同的接口获取数据,部分接口是否可以合并为一个?Doze测试(打盹儿)暂停访问网络。系统忽略PowerManager.WakeLock唤醒锁定。标准 Alarm原创 2021-08-09 11:26:17 · 357 阅读 · 0 评论 -
ANR问题分析
ANR类型KeyDispatchTimeout(常见。Input的超时机制与其他的不同,对于input来说即便某次事件执行时间超过timeout时长,只要用户后续在没有再生成输入事件,则不会触发ANR)input事件在5S内没有处理完成发生了ANR。logcat日志关键字:Input event dispatching timed outBroadcastTimeout前台Broadcast:onReceiver在10S内没有处理完成发生ANR。后台Broadcast:onReceiver在原创 2021-08-08 16:48:46 · 670 阅读 · 0 评论 -
启动流程优化
冷启动: 冷启动是指应用从头开始启动:系统进程在冷启动后才创建应用进程。发生冷启动的情况包括应用自设备启动后或系统终止应用后首次启动。 (第一次打开app)热启动: 在热启动中,系统的所有工作就是将 Activity 带到前台。只要应用的所有 Activity 仍驻留在内存中,应用就不必重复执行对象初始化、布局加载和绘制。 (按下home键)温启动: 温启动包含了在冷启动期间发生的部分操作;同时,它的开销要比热启动高。有许多潜在状态可视为温启动。例如: 用户在退出应用...原创 2021-08-05 10:30:31 · 148 阅读 · 0 评论 -
Handle、Loop、Message、MessageQueue 源码解析
首先感谢在看的读者们,因为这是我第一次写博客,可能写的不太好,大神勿喷、大神勿喷、大神勿喷。好了废话不多少,下面进入我们的正题。下面请看源码。。。。。。===『眼镜都带上了,楼主让我看这个呀』哈哈,当然不是呀。我只是想说 所有学习的东西都是从 hellow world 开始吗。首先我们都知道每一个app的入口都是main方法开始运行,那说啥,咱们点击去看一下把main方法是放在final 修饰的A...原创 2018-05-08 15:03:41 · 632 阅读 · 2 评论 -
线程池内部分析(一)-interrupt、interrupted、isInterrupted
说起关于线程池文章,网上已经很多了,再次我也不介绍那么详细了。介绍线程池之前我们先看一下他内部几个方法和参数interrupt、interrupted和isInterrupted的区别讲解之前希望先看一下这篇文章https://blog.csdn.net/github_34889651/article/details/52474869点击打开链接文章的最后我有个总结,我根据我意思稍微改一下1. i...原创 2018-07-04 10:51:57 · 1189 阅读 · 0 评论 -
activity启动过程文字讲解
第一步应用安装安装应用的时候,系统会启动一个PackaManagerService的管理服务,这个管理服务会对AndroidManifest.xml文件进行解析,从而得到应用程序中的相关信息,比如service,activity,Broadcast等等,然后获得相关组件的信息,保存到ShortcutInfo类中。第二步Launcher应用启动安装的应用我们都知道Launcher也是个应用,源代码工...原创 2018-07-15 18:01:48 · 152 阅读 · 0 评论 -
Android内存、性能优化
1、Bitmap:压缩处理(有固定的尺寸),用完及时recycle,透明度属性尽量使用RGB_565,多次使用缓存处理2、Cursor(游标)回收3、Receiver(接收器)回收4、Stream/File(流/文件)回收1、使用系统自带的类库,不要自己写(TextUtils、String.indexOf())2、重用系统资源:ListView的item、图片、字符串、style、颜色...原创 2018-12-28 17:33:35 · 155 阅读 · 0 评论 -
android项目突然出现大面积乱码
打开项目乱码,本地文件没问题1.可复制另存重命名再打开项目2.删除.Androidstudio/system/caches下缓存文件再重新打开项目原创 2019-08-02 12:49:13 · 813 阅读 · 0 评论 -
内存优化管理
一、内存抖动短时间大量的对象创建及销毁,伴随着频繁的gc(比如字符串拼接,在class编译的后,能看到大量的StringBuilder被创建出来)。内存抖动会造成卡顿、oom现象。为什么?卡顿的原理:android回收机制默认使用的是cms机制,如果内存满了,gc开始工作,工作的时候,会把所有的线程都挂起包括主线程,同时采集你创建的无用对象,并收集,销毁。此时就会有卡顿现象。如果频...原创 2019-08-28 11:34:44 · 228 阅读 · 0 评论 -
成员变量和局部变量的区别
成员变量: ①成员变量定义在类中,在整个类中都可以被访问。 ②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。 ③成员变量有默认初始化值。 局部变量: ①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。 ②局部变量存在于栈内...转载 2019-10-09 18:06:32 · 119 阅读 · 0 评论 -
layout 下面的文件不更新了
折腾了一天 终于发现是多了一句 res.srcDirs = ['src/main/res', 'src/main/res/layout']删除 就ok 了。具体为啥,求大神回复!原创 2017-03-17 11:10:09 · 402 阅读 · 0 评论