死锁问题探究(Android方向)

什么是死锁 说到死锁,大家可能都不陌生,每次遇到死锁,总会让计算机产生比较严重的后果,比如资源耗尽,界面无响应等。 死锁的精确定义: 集合中的每一个进程(或线程)都在等待只能由本集合中的其他进程(或线程)才能引发的事件,那么该组进程是死锁的。 对于这个定义大家可能有点迷惑,换一种通俗的说法就是:

Continue Reading →

volley源码学习

之前一直对于源码学习抱着一种又爱又恨的心情。爱的是因为知道源码有一些特别好的设计思路,可以让自己借鉴,而且对于设计模式来说是最好的实战场。那为啥还会恨呢,曾经很多次下载了很多开源库的源码,可是看的看的就感觉云里雾里,不知所踪。心中没有一个总体的框架,总感觉看的细如牛毛,一叶障目。今天又找时间翻出最简单的volley,准备从头再看一遍。没想到收获很多,写下这篇文章,用来记录。

Continue Reading →

android句柄泄漏

前言 在android开发过程中,跑一些单元测试,很容易暴露出文件句柄泄漏的问题。前段时间就有这么一个bug,最后确定是文件句柄泄漏的问题。下面我记录下当时一步步如何查找定位句柄泄漏。 正文 首先让我们看一眼抛错的log日志。

Continue Reading →

AIDL 跨进程通信总结

最近几天系统的看了下android跨进程通信的一些方式,主要的一个部分就是通过AIDL,利用binder进行跨进程通信。 跨进程通信的方式 共享文件(包括sharedpreferences) 共享内存 socket AIDL(Messager,ContentProvider,普通aidl) AIDL介绍 首先aidl并不是一个通信方式,aidl只是一个android接口规范语言,用来生成最后实际需要的java类。 下面是主要注意点:

Continue Reading →

视频编辑总结

最近公司在做视频编辑相关的功能,现在将做项目过程中遇到的问题总结如下: 1.视频格式概念       平常所见的视频格式比如MP4,AVI,MKV,MOV,FLV等是视频的包装格式。是将音频部分与视频播放包转起来。也就是通常英文里面说的container。而每一种视频包装格式,里面视频与音频的编码又是多种多样的。 2.视频轨道     我们通常所说的视频压缩就是在视频轨道里面做的,比如H263,H264,H265,VP8,VP9,这些都是视频压缩编码格式,目的是将一帧帧原始视频帧数据,通过一定的算法(包括帧内压缩,帧间压缩),将原始很大的数据量,压缩到很小。压缩这里涉及到I,B,P帧的概念,后面有需要了解.

Continue Reading →

android studio 调试技巧(简直太好用)

说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原来可以玩的这么牛。下面我分别一一做介绍。 条件断点(Conditional Breakpoints) 这个调试模式是我最喜欢的,简直不能再方便了,以前遇到在循环里面打断点,需要看某个条件下的值,我只能一遍遍点击,直到满足条件。 那么这个条件断点改怎么用呢,在你的断点上点击右键,就会弹出一个选择对话框,在里面的condition框里面填写上你所需要中断的条件即可,这有程序就会在满足你的条件下才会断点停下。下面放张动态图,一看就明白,之后的几个技巧也都会附一张动态图来形象的展示。

Continue Reading →

android studio 插件开发(自动生成框架代码插件)

起因 去年公司开始上新项目,正好android在架构这方面的讨论也开始多了起来,于是mvp架构模型就进入我们技术选择方案里面,mvp有很多好处,但是有一个非常麻烦的地方是代码量很大,写一个页面需要写很多接口类回调。所以当时就想写一个插件用代码来生成,但是迫于项目紧急一直没有研究。最近公司项目不是很紧,所以抽空搞了下. 过程 刚开始选择方案,我是准备拿python写,因为之前也接触过,写过一点小程序,所以还算比较顺手,但是写了一半之后,感觉用python和androidstudio结合不是很紧密,通过了解,开发android studio的插件也是用java,所以就再次换成开发android studio的方式。 由于android studio是用的IntelliJ IDEA的开源版本做的,所以开发android studio的插件 ,其实就是开发IntelliJ IDEA的插件,所以IntelliJ IDEA是必须的,可以在官网去下载社区免费开源版本。

Continue Reading →