归档: 2020

LeakCanary源码解析之——dump堆栈

前言在前一篇文章LeakCanary源码解析之——内存泄漏监测当中从源码的角度对Leakcanary中内存泄漏监测原理进行了剖析。既然监测到了内存泄漏,那么接下来就是要把堆栈给dump出来,进行堆栈分析,最终以图形化的方式展示内存泄漏堆栈。本篇文章就从源码的角度分析一下dump堆栈的过程。 本次分析的源码基于: 123dependencies { debugImplementation

LeakCanary源码解析之——内存泄漏监测

前言在日常开发中,肯定都使用过LeakCanary这个库来监测app的内存泄漏问题。LeakCanary会自动监测、分析以及上报内存泄漏,其工作主要是分为以下四步: 1、监测泄漏的对象 2、dump堆栈 3、分析堆栈 4、对泄漏进行归类,然后通过通知的方式上报内存泄漏 那么LeakCanary监测内存泄漏的原理是什么呢,怎么判断一个Activity或者Fragment被泄漏了呢?本篇文章就从源

Jetpack Compose初体验

关于Jetpack Compose Android Jetpack Compose是2019 Google/IO大会上推出的一种声明式的UI开发框架,经过一年左右的演进,现在到了alpha阶段。Jetpack Compose是用于构建原生界面的新款Android工具包。它可简化并加快Android上的界面开发。使用更少的代码、强大的工具和直观的KotlinAPI,快速让应用生动而精彩,从此不再需要

hexo插入音频和视频

音视频准备在线音视频如果是在线音视频的话,只要有url就行 本地音视频在public文件夹下面新建一个resources目录,把视频和音频放在这个目录里面,这里我把视频放在video子目录下面,把音频放在audio子目录下面。 为啥要把资源放在public?只有把资源放在public文件夹下面,网页才能访问!!最开始就是在这里卡了很久一直没法播放,原来是路径设置不对导致没法访问 安装插件安装a

Android MVVM框架之Livedata以及ViewModel

背景场景1:假设现在我们在Activity或者fragment当中会监听数据Model的回调,在回调里面会更新一些UI的状态,那么就会存在以下问题: 1、当页面不可见的时候也是能收到回调的,相当于在后台进行UI刷新,这个其实是不对的。一般情况下如果想解决这个问题的话就需要在onStop的时候反注册Model监听,然后等页面回来onStart的时候重新注册Model监听且需要主动读取一次Model

早起龙城公园爬山——2020.11.1

空气新鲜(function(){var player = new DPlayer({"container":document.getElementById("dplayer0"),"autoplay":true,"theme":"#FADFA3","loop":true,"video":{"url":"/resources/video/scenery.mp4","pic":"/resources/

Android生命周期感应组件lifecycle

背景生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。 一种常见的模式是在 Activity 和 Fragment 的生命周期方法中实现依赖组件的操作。但是,这种模式会导致代码条理性很差而且会扩散错误。通过使用生命周期感知型组件,您可以将依赖组件的代码从生命周期方法移

Android Jetpack简介

Jetpack简介Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。 Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确保您始终可以获取最新且最好的 Jetpack 组