- 博客(27)
- 收藏
- 关注
原创 android其实很简单 -- Glide简单分析
最近在使用Glide,遇到不少不解的问题生命周期是如何绑定的缓存策略从官方的例子开始 // 这里的this我们假设为Activity Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);with // with返回了一个RequestManager,RequestManager
2018-01-20 17:29:33 949
原创 android其实很简单 -- roaster 以代码构建代码
今天看别人开源代码,有一个类怎么查也查不到,最后拉下来编译却能通过,一开始还以为用来反射,但代码里是直接引用。后面去看了下gradle的依赖,发现了依赖roaster这库,很有意思 roaster
2017-12-15 11:36:03 408
原创 android其实很简单--Ijkplayer的简单封装
最近在实现一个播放视频的需求,主要功能是接收一个视频的链接,显示封面及基本的视频控制从网上查到结果,基本都推荐使用b站开源播放器ijkplayer 不过ijkplayer只是一个播放器内核,并没有封装好控制界面。封装ijkplayer的项目也有很多,不过感觉功能略显复杂,文档也不大清晰,于是萌生了自己造轮子的想法。
2017-12-04 15:11:25 4390
原创 android其实很简单--内存相关
内存泄漏java是垃圾回收语言,无需开发者管理内存分配逻辑上的失误导致内存泄漏:当应用不再需要这个对象的时候仍未释放该对象的所有应用1.Context,由于Content包含了大量的内存引用。 全局的process的static引用activity2.static view2.静态inner classes 内部类持有外部类的强引用3.匿名类 当acitivity被销毁的时候,匿名的Async
2017-12-01 10:16:52 261
原创 Android Framework学习 -- NFC金融
最近两天研究了下移动金融的东西,水是相当的深。NFC有三种模式:点对点(p2p),读/写卡(reader/writer),卡模拟(card emulation),在移动金融领域中一般只有卡模拟模式。乱七八糟的卡说到卡模拟,先要明白这里的卡指的是什么,这里的卡指的是集成电路卡(Integrated Circuit Card,IC卡),又称智能卡(Smart card),还有一些乱七八糟的叫法。 et
2017-11-19 11:28:02 818
原创 设置git本地代理
设置git config --global https.proxy http://127.0.0.1:1080git config --global https.proxy https://127.0.0.1:1080git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy
2017-11-19 11:26:54 1946
原创 Android framework学习笔记 -- 原生分屏原理
分屏代码在AOSP其实老早就存在了,就一直没有开启而已,在6.0版本可以通过设置系统属性ro.build.type改为userdebug,并在开发者选项中开启多窗口模式,然后在最近任务上就会个按钮可以实现分屏。通过adb命令也可以实现分屏$ am task resize 25 0 720 1080 1920在最近任务的调用链RecentsActivity#onTaskResize ->Recent
2017-11-19 11:25:02 2352
原创 Android Framework学习笔记 -- aidl的使用
接口文件aidlpackage com.zst.xposed.halo.floatingwindow3.services;interface IActivityManagerService { void snapActivityTop(int id); void snapActivityBottom(int id);}managerpackage com.zst.xposed.ha
2017-11-19 11:23:39 331
原创 Android Framework学习笔记 -- 在framework添加system service
这是在android 6.0下的实现,其他版本可能有改动在Context.java添加服务名称//--->frameworks/base/core/java/android/content/Context.javapublic static final String A_SERVICE = "a";@StringDef { ... A_SERVICE}在ServiceServic
2017-11-19 11:21:47 434
原创 Android Framework学习笔记 -- 在android源码添加项目的正确办法
主要是Android.mk文件lib版本LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := your-module-nameLOCAL_MODULE_TAGS := optionalLOCAL_MODULE_CLASS := JAVA_LIBRARIESLOCAL_SRC_FILES := $(call all-s
2017-11-19 11:16:54 338
原创 git应用补丁
注意打补丁的路径检测你的补丁状况$ git apply --stat your_fly_sky.patch查看是否能应用成功$ git apply --check your_fly_sky.patch应用patch$ git am -s < 0001-minor-fix.patch
2017-11-19 11:15:05 458
原创 Android Framework学习笔记 -- Binder原理
看到老罗android之旅分析android源码简直逆天,跟代码都跟到驱动层去了,看了半天连个大概都看不懂,还有《深入理解Android》,跟一段代码跟着跟着都不知道自己在看啥。发现还是要对系统框架有个大概的了解,再去看这些东西比较好。SurfaceFlinger作为android绘制服务,涉及东西还是挺多的。跨进程通信Binder机制上层的View系统下层的Display系统首先是Bind
2017-11-19 11:13:19 355
原创 Android Framework学习笔记 -- Surface的绘制过程
今天看到一篇很不错的的关于SurfaceFlinger的文章,主要是看到android源码中有一个简单明了的test,而且还被我编译过了,都不知道的前几个星期看的都是些什么东西- -
2017-11-19 11:10:52 481
原创 android其实很简单--双层Toolbar上拉隐藏实现
双层Toolbar上拉隐藏实现实现效果实现过程第一层Toolbar的隐藏使用的是AppBarLayout的layout_scrollFlags属性及layout_behavior属性的配合 // ---> activity_main.xml <android.support.design.widget.AppBarLayout android:layout_width=
2017-11-16 09:55:46 1859
原创 Android Framework学习笔记 -- client与AudioFlinger的数据交换
AudioTrack与AudioFlinger在两个不同进程,他们之间要通过共享内存进行音频的数据交换。 交换的实现通过环形缓冲去来实现,貌似没有同步机制,从实验结果来看,AudioTrack写满缓冲区后AudioFlinger就会去读取。数据交换的实现主要在AudioTrackShared.cpp中实现,包括AudioTrackClientProxy和AudioTrackServerProxy。
2017-11-12 10:56:11 1719
原创 Android Framework学习笔记 -- 蓝牙设备播放流程
因为蓝牙通路与其他设备不同(多了一个蓝牙设备),因此播放的流程也与其他设备略有不同。蓝牙设备的连接从setDeviceConnectionState开始,AudioPolicyManager先注册Device后,再去打开设备对应的output,如果是duplicating类型的话,还要建一个DuplicateOutput,关联该output与mPrimaryOutput//--->framework
2017-11-12 10:54:45 3260
原创 Android Framework学习笔记 -- Audio 混音
android的混音是通过AudioMixer来实现的,最近遇到了一个混音的问题,该是好好看看音频的基本知识了。音频的基本知识很早之前就知道音频存储是通过采样来实现的,就是所谓的A/D(Analog-to-Digital Converter与D/A(Digital Analog Converter) 音轨有很多属性如采样率(sampleRate)编码格式(format)通道(channelC
2017-11-12 10:53:11 5839
原创 Android Framework学习笔记 -- Audio调节音量流程
Audio调节音量流程 Audio音量调节是一级一级调节,而且分不同的流类型,如响铃,通话,多媒体等。不同的设备(蓝牙设备)的设置方法有所区别。sdk的api,设置相应流的音量。不同的流index的范围不一样
2017-11-12 10:50:49 4080
原创 Android Framework学习笔记 -- 移植cm的记录
下了一整套cm的代码,复制备份,看了cm的官方文档、老罗的博客和其他一些文章,感觉无从下手啊。突然想手里还有个mi3,刚好cm有mi3的适配,先搞搞mi3的吧。
2017-11-12 10:46:43 1218
原创 Android framework学习笔记 -- Google tracing的研究
最近使用systrace做性能测试,在systrace上统计红绿灯,因为数到眼残,所以做了个自动数帧的工具。 主要做法是修改chrome tracing的源码话说tracing这么好用,不出个cmdline真不合理。
2017-11-12 10:44:44 1005
原创 Android Framework学习笔记 -- Surface的绘制过程
上一篇说到surfaceflinger绘制就没了,因为surfaceflinger的流程复杂了,有vscny信号,有messagequeue,等等,所以,主要是因为懒啦,所以先分析关于surfaceflinger的核心函数handleMessageRefreshvoid SurfaceFlinger::handleMessageRefresh() { ATRACE_CALL(); p
2017-11-12 10:41:15 1261
原创 android开发学习 -- 通过反射去获取类的属性
以前打log喜欢用toString,然后自己重写toString的方法 比如有个类 Diamond class Diamod { String color; String size; @Override public String toString() { return "color:" + color +
2017-11-12 10:38:46 4386
原创 Android Framework学习记录 -- repo的强制更新
repo是git仓库管理工具,一般用repo sync去更新代码,实质上是在每个仓库下执行git pull,这样就比较蛋疼了,当你本地有提交的话它会自动帮你merge进去,还装做一切都ok的样子。在被坑了数遍之后,终于发现了这个问题。 彻底的同步服务器代码 $ repo sync -d# Remove all working directory (and staged) changes.$
2017-11-12 10:34:11 3811
原创 NodeJs学习 -- 异步机制
半懒的状态去写了只小爬虫,想把其他网站的视频爬下来传到其他服务器上,没想到搞了两天,Nodejs的异步机制真是让人又爱又恨。。异步机制导致的问题当前遇到nodejs的异步机制最大的问题是跟循环配合一起使用的时候,循环会一下并发所有的函数,举个例子// 抓取单个视频并添加水印,上传数据库等操作function getId(id) { ... }// 抓取id为0 - 4000的视频for(var
2017-11-11 16:40:38 312
原创 PHP学习笔记 -- 多表连接查询
所谓的多表连接查询,就是一个表里面有另外一个表单引用id,然后要去查这个id的详情。 其实就是使用SQL的join功能实现,具体例子w3school写得比较好,直接参考SQL INNER JOIN 关键字这里要说的是ThinkPHP的使用方法 数据库中有两个表,一个是order表,一个是shop表 order表里面有shop表的一个sid引用,然后要查order及对应的shop情况 // g
2017-11-09 15:52:10 680
原创 PHP学习笔记 -- 前后端及移动端
昨天遇到一个问题,就是页面的按钮要怎么调用到PHP方法,后面才意识到这个其实前端的工作。后端按我的理解后端的主要工作是业务逻辑处理,常见的编程语言有PHP,Java(J2EE),Python,Ruby,go ,node-js 等,包含数据库。运维、安全及架构师应该另算吧前端前端这个比较熟,主要工作在于用户交互,三剑客html + css +javascript。前端感觉
2017-11-09 15:37:29 496
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人