自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Lifecycle的使用和原理

{如果我们还有其他的监听操作,那每个生命周期的回调都要写一套,这样的方式太过繁琐,有了Lifecycle 我们的工作量就大大减轻了。如何使用:1. 创建一个观察者类2. 在Activity 初始化时注册观察者init {) {

2023-09-06 18:52:08 241

原创 Android Activity 的启动流程

当我们启动Actitivity 或者关闭Activity 时,我们经常说这个活动入栈或者出栈了,那到底是什么入栈出栈了呢?这里有一点要注意的是这里我们调用了一个startPausingLocked ()方法, 如果当前获取焦点的Activity不为null, 我们还要暂停它,最终调用了当前活动的onPause() 方法,也就是说在开启新的Activity之前要先暂停当前Activity,所以为了使新启动的Activity 更快的启动,我们不要在onPause() 方法中做过多的操作。

2023-07-03 18:44:10 1147

原创 LiveData 的使用和原理

如果我们用过Rxjava 的话知道,Rxjava 是基于观察者模式实现的异步数据处理库,它可以在我们订阅的时候向我们分发数据,但有一点可惜的是Rxjava 的Observable 并不具备组件生命周期感知的能力,所以当我们在一个组件生命周期即将结束时取消订阅和数据分发时,需要手动去取消订阅;而谷歌官方退出的LiveData 恰恰解决了这个问题,LiveData 是一个数据持有者,同时它又具备了组件生命周期感知能力。

2023-09-18 17:24:27 159

原创 Android应用如何实现分享到企业微信

一开始我们想到的是跟踪企业微信的页面套转的栈信息,拿到了企微的包名以及分享后跳转的Activity 全路径,然后通过Intent.setComponent() 后直接跳转到分享页面,但是企微内部做了某些校验,导致我们跳转一直失败,后来我们把思路拓展到系统分享的功能上来。之前项目中顾客模块改版时,产品提到想要做一个分享信息到企业微信的功能,正常的方案应该是到企业微信开发者中心查看文档确定分享的API 调用,然后集成到项目中,但是我们找了半天并没有在企业微信文档中找到相应的API, 于是只能另辟蹊径。

2023-09-07 14:23:47 652

原创 String,StringBuffer,StringBuilder 区别

其实很简单,这是考虑性能开销和安全的结果,因为字符串常量是不可变的,两个常量肯定是直接拼接效率更高,如果是拼接变量,首先要考虑线程安全的问题,其次如果拼接多个变量,由于String 不可变,如果直接拼接,要多次创建新的String 对象,而StringBuilder 或StringBuffer 是可变的,效率更高。对于常量字符串相加+,会将两个字符串直接拼接,然后存入字符串常量池中,如果是字符串同变量相加,会创建StringBuilder 或者StringBuffer 拼接,

2023-09-06 16:49:48 49

原创 垃圾回收策略

将现有内存分为两块,每次只使用其中的一块,垃圾回收的时候将正在使用的内存中存活的对象复制到未被使用的内存中,然后清除正在使用的内存中的所有对象,交换两块内存的角色,完成垃圾回收。可达性分析法:将内存中一系列名字为GC Roots 的对象作为起点,由上至下搜索,所走的路径成为引用链,最后通过判断对象的引用链是否可达来作为对象是否回收的依据。Mark阶段,从GC Roots 开始 遍历内存中的对象,可达的对象标记为存活对象,不可达的标记为垃圾对象;缺点:内存的利用率比较低,因为内存只能使用一半。

2023-09-05 15:24:25 38

原创 JVM 运行时分区

存放对象实例的区域,堆中内存分为新生代(Eden, Survivor区),老年代,不同的区域存放具有 不同生命周期的对象。2.虚拟机栈:用来描述java 方法执行时的内存模型,是一个后入先出的数据结构(LIFO),每执行一个方法时会创建一个栈帧插入到虚拟机栈中,方法执行完成,该栈帧则从虚拟机栈中弹出。java 程序是多线程的,当某个线程被挂起时需要记录当前线程执行到的位置,方便该线程被重新运行时知道从哪条指令开始执行,这就是程序计数器的作用。支持的操作:分支操作、循环操作、跳转、异常处理等。

2023-08-30 19:33:49 35

原创 Jenkins 上Android 项目集成

Jenkins Android 项目集成Jenkins 作为持续集成的一个常用工具非常的实用,它不仅方便了测试人员随时打包的需求,也将开发人员从打包的重复工作中解放出来。最近在本地环境部署了Jenkins 环境,并将我们的项目集成到Jenkins 中,特将过程整理成该文档以供参考。Jenkins 安装步骤比较简单,只要正常按照提示进行操作即可,不做详述。Jenkins 程序下载链接:htt...

2023-07-07 15:24:05 824

原创 HandlerThread 使用以及源码分析

  Android 开发我们在主线中不能过耗时操作,像类似网络请求、数据库查询等耗时操作我们都要在子线程中进行,但是线程也是一种系统资源,频繁的new Thread() 肯定会有一定的资源消耗,所以除了用线程池来进行线程管理外,Android还给我们提供里HandlerThread 来进行耗时操作。 HandlerThread 是Thread的一个子类,不同的是,它内部创建了Looper,有了轮询...

2018-03-06 19:48:44 255

原创 Java 实现双链表数据结构

首先,双链表也是链表的一种;与单链表不同的是,他不仅有着当前节点下一个节点的指针,也存有当前节点上一个节点的指针,这样就形成了一种循环的链表结构。对于双链表,增加新的节点或者删除某个节点十分非常方便的,只需要修改所在相关节点前后节点的指针指向就可以了。所以对于双链表中的任何一个节点都有着三个元素:上一个节点的指针,下一个节点的指针以及当前节点所存储的对象。下边是java如何实现双链表结构:pu

2018-02-03 13:02:48 281

原创 如何解决Android运行时异常“Binary XML file line # : Error inflating class”的异常

对于Android运行时异常“Binary XML file line # : Error inflating class”的异常 ,http://blog.csdn.net/huangxiaohu_coder/article/details/8497286这位博主说了很多原因,大家可以参考下。下边我说下我项目中出现这个异常的原因:项目中导入了三方的module,其依赖了com.android

2017-09-08 13:13:20 4268

原创 如何解决java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList couldn't find xx so

公司项目的OCR 文档识别的sdk 仅仅提供了armeabi 的so库,然而项目主moudle里的libs里边还有arm64-v8a包,这就造成了64位的手机一调用这个库就会崩溃报:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xxx.xxxxx.xx

2017-09-05 20:13:17 8996

原创 如何解决java.lang.UnsatisfiedLinkError: Couldn't load x from loader dalvik.system.PathClassLoader

把sdk导进去跑起来后总是报java.lang.UnsatisfiedLinkError: Couldn't load x from loader dalvik.system.PathClassLoader的错误,然后项目就anr死掉了,纠结了一段时间。后来发现因为sdk提供的libs包里只有一个armeabi包,只要再新建一个armeabi-v7a,然后把armeabi的文件copy一份到a

2017-09-03 12:40:59 780

原创 Android Handler机制源码解析

一直想写博客,但是都没有进行,今天这篇handler机制算是开头第一篇吧哈哈。这篇博客不为别的。就算是把自己对于handler机制的理解写下来,也方便以后可以回顾下,如果能够帮到别人就更好了。  Android 规定对于修改界面UI的操作必须放在主线程中执行,而对于一些查询数据库或者联网请求数据的耗时操作,为了避免产生界面暂时无响应等ANR的情况要放到子线程中进行。耗时操作完成后我们要切换

2017-08-09 23:19:19 416

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除