自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(43)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android 开发者的下半场

2018年,整个移动互联网进入了下半场。为什么说已经进入了下半场,谈未来,先讲历史,我们来重头开始捋一捋吧。2005 年,Google 收购了成立不到两年的 Android 公司,经过三年多的研发,于 2008年推出了 Android 1.0 ,此时还是搭载塞班系统的诺基亚的天下,业界并不看好 Google 的 Android ,很多人认为最多一年 Google 就会放弃 Android。20...

2018-10-25 09:37:05 494

原创 区块链入门-概念原理篇

比特币和区块链2008年,中本聪发布了一篇名为《比特币:一种点对点的电子现金系统》论文,之所以选择在金融危机这年发布,也许别有深意。他认为传统货币最根本的问题在于信任,银行必须让人信任它能帮我们管好钱财,但是银行却在用货币制造信贷泡沫,通货膨胀使人财富缩水。首先中本聪把比特币定义为一种点对点的电子现金系统, 目的很明确:希望这套系统不要依赖任何一个中心,比如中央银行,所以这个系统肯定是分布式系

2018-02-06 13:56:05 870 1

原创 hook 应用程序的入口 Activity

# 问题假如你现在要开发一个 SDK,比如说广告SDK吧,你希望在应用的入口 Activity 之前插入你的 Activity,在你的 Activity 中显示广告, 怎么做? 我看过联通沃商店的做法, 要求接入方声明自己的 Ativity 为入口 Activity,这种做法显然不符合一个技术人的追求的。那么我们能不能在接入方无感知的情况把我们的 Activity 强制插入到入口 Activi

2017-12-09 22:09:10 632

原创 2016 年技术总结

记得去年写年终总结的时候,我还在去看老友的火车上,那时对新年一年充满了无数期许,虽已是争分夺秒,但是当宣布 game over 的那一刻,这一年的收获、成长、遗憾、失落已经定格。内容提要MVP 架构 App浮窗组件开源NodeJs 全栈开发App web 化发展趋势年度博客总结MVP 架构 App针对项目中结构混乱,分层不清晰,提出 MVP 架构的想法,经过内部分享,试点实践,最终于五六

2017-01-24 15:10:29 466

原创 一个程序员的运气有多重要

先说两个真实的故事:第一个故事有点悲凉,2011年3月,我的同学老 A 和我一同进入茁壮网络,2012 年公司战略变动,整个部门端掉了,我提前离了职另谋出路,老 A 一直赖到了最后拿到了N+1,后来和当时的部门经理一同进入一家创业公司,没日没夜的干了两年,最后公司工资都发不起,直到我这位同学离开,还有两个月的工资没拿到。第二个故事有点刺激,发生在我呆过的第三家公司:博雅互动。2011年我的另一位同学

2016-09-28 13:48:09 8863 25

原创 Java对象之死

我们都知道垃圾回收是指回收那些不再使用的对象所占的内存区域。生动的说,在 Java 的世界里,无用的人就要拉出去枪毙了,并且把其所占的地盘清理,以便让“别人“来使用。如何判断对象“无用”?关于判断对象是否无用的算法,在JVM的发展过程中出现过两种算法:一种是引用计数和根集算法。引用计数算法例如下图中的object1的引用计数是2,GC的时候不回收,object6、object7引用计数为0,GC的时

2016-05-27 22:09:57 1238 1

原创 Activity是如何接收到touch事件的(窗口与用户输入系统)

在《浮窗开发之窗口层级》这片文章中,开篇提出了三个问题: * 窗口层级关系(浮窗是如何“浮”的)? * 浮窗有哪些限制,如何越过用户授权实现浮窗功能? * Activity是如何接收到touch事件的?前两个问题在前两篇文章中已经分析,在这篇文章中我们以第三个问题为切入点,简单分析一下窗口与用户输入的关系。Touch事件是如何分发到Activity上来的? 正常的思路是直接去寻找Activi

2016-05-10 17:35:07 2462

原创 越过用户授权使用浮窗

上一片篇文章分析了Android窗口系统层次、Ativity的窗口和系统窗口的区别,这篇文章我来说说使用系统窗口来实现浮窗的一些限制,我们如何越过这些限制。简单的浮窗实现final WindowManager windowManager = getWindowManager(context);//创建自定义浮窗 FloatView hideDialog = new FloatVie

2016-05-07 23:11:04 2007

原创 浮窗开发之窗口层级

最近在项目中遇到了这样的需求:需要在特定的其他应用之上悬浮自己的UI交互(拖动、输入等复杂的UI交互),和九游的浮窗类似,不过我们的比九游的体验更好,我们越过了很多授权的限制。 很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: * 窗口层级关系(浮窗是如何“浮”的)? * 浮窗有哪些

2016-05-05 09:37:47 3223

原创 内存泄漏与内存溢出

最近项目中频繁出现OOM的问题,各自路径测试、内存走向分析、各自逻辑推理才最终定位到问题。在这过程中和组内的同学讨论的时候发现有的同学对内存泄漏和内存溢出的概念理解不到位,导致沟通过程比较尴尬。很多同学对这两个概念理解不够透彻,在项目代码中频繁写成内存泄漏的低级代码出来,结合自己的理解我写一篇文章理解下着两个概念。内存泄漏内存泄漏是指那些本应该回收(不再使用)的内存对象无法被系统回收的现象。在c++

2016-04-24 18:42:59 1712 2

原创 插件化研究之资源冲突

最近在研究Android应用的插件化开发, 插件化都是在解决以下几个问题:如何把插件apk中的代码和资源加载到当前虚拟机。如何把插件apk中的四大组件注册到进程中。如何防止插件apk中的资源和宿主apk中的资源引用冲突。本章我们来研究最后一个问题:资源共享与冲突。在《Android应用程序插件化研究之AssertManager》中,我们实现了加载插件apk中资源问题,实际上我们是单独创建了

2016-04-09 22:18:44 1457

原创 插件化研究代之dexmaker动态生成Activity

文章首发:插件化研究代之dexmaker动态生成Activity|大利猫最近在研究Android应用的插件化开发, 插件化都是在解决以下几个问题: * 如何把插件apk中的代码和资源加载到当前虚拟机。 * 如何把插件apk中的四大组件注册到进程中。 * 如何防止插件apk中的资源和宿主apk中的资源引用冲突。我们已经解决了如何把apk中的代码和资源加载到当前应用的问题,上一篇文章中使用代理的

2016-03-29 10:51:10 785

原创 插件化研究之Activity注册

文章首发:插件化研究代之Activity注册|大利猫最近在研究Android应用的插件化开发,看了好几个相关的开源项目。 插件化都是在解决以下几个问题: * 如何把插件apk中的代码和资源加载到当前虚拟机。 * 如何把插件apk中的四大组件注册到进程中。 * 如何防止插件apk中的资源和宿主apk中的资源引用冲突。在上篇文章中我研究了如何获取并使用插件apk中的资源的问题(文本、图片、布局等

2016-03-24 22:24:29 802 1

原创 Android应用程序插件化研究之AssetManager

文章首发:Android应用程序插件化研究之DexClassLoader|大利猫最近在研究Android应用的插件化开发,看了好几个相关的开源项目。插件化都是在解决以下几个问题:如何把插件apk中的代码和资源加载到当前虚拟机。如何把插件apk中的四大组件注册到进程中。如何防止插件apk中的资源和宿主apk中的资源引用冲突。就这几个问题,我开始研究插件化开发实现的相关技术。在

2016-03-14 21:42:08 923

原创 Android应用程序插件化研究之DexClassLoader

文章首发:Android应用程序插件化研究之DexClassLoader|大利猫最近在研究Android应用的插件化开发,看了好几个相关的开源项目。插件化都是在解决以下几个问题: * 如何把插件apk中的代码和资源加载到当前虚拟机。 * 如何把插件apk中的四大组件注册到进程中。 * 如何防止插件apk中的资源和宿主apk中的资源引用冲突。就这几个问题,我开始研究插件化开发实现的相关技术,本篇

2016-02-28 17:24:31 536

原创 程序员的修炼之路

很荣幸得到墨加的邀请,做了一次线上分享,对我来说一次自我梳理的机会,我把分享的内容整理成这篇文章,时刻激励自己,也希望能给那些和我一样在努力挣扎着的技术同胞们一点参考。我们先来看看作为一枚程序员,这个行业对我们的要求是怎样的。这是一份工程师的职级表(点进去看),大约是参考腾讯系的技术族职称。我相信看完之后都会有种“路漫漫其修远兮”的感觉,就像游戏中升级打怪一样,开始升级比较快,越往后面越难

2016-02-23 22:49:03 641

原创 Android应用架构之MVP实现

回顾上一篇文章《Android应用架构概述》,我们知道,Android App 本质上抽象成两个层次:视图和数据。为了App在发展过程中快速的适应变化,方便维护和快速迭代,我们要将数据和视图解耦,而在解藕方面我们的前辈们在漫长的软件开发经验中为我们提供了两套流行的指导框架:MVC和MVP,其中MVP近年来在Android应用开发上逐渐流行。接着上一篇的内容,本章我将结合具体例子说清MVP解藕的实现。所以本章的思路是:以登录为业务场景,分析对比“非MVP”和MVP的实现方式。demo地址:https://gi

2016-01-24 20:34:39 662

原创 程序员的“认知失调”

“不可能啊”、“一定是服务器的原因”、“我的程序不应该有问题啊”,这些年工作听到的最多的就是这些话了,程序员都是比较自信的,总是觉得自己的程序肯定没问题。点击进入我的博客。程序就是程序员的自我延伸,花了几个小时甚至几天时间构建的结果,最后它以“正确”的形象印入你的意识里,你自然不希望别人找出什么纰漏,即便找出什么纰漏了,自己也意识到了“不足”,感情上很难接受,所以大部分人都会习惯性的“辩护

2016-01-23 18:13:03 736

原创 程序员的年终总结

2015年过去了,如果把我过去几年的经历连成线的话,过去这一年的弯道比过去三年的都多,感谢所有遇到的人和事,这一年成长了很多,改变了很多。链接:我的博客。回头发现时间太快,走的太慢13年进入东方博雅,感觉那里就是一个“小腾讯”,Team leader、后端、产品经理、基本上都来自腾讯。当时的心态还比较简单,刚刚出来工作不久,总以为未来还很远,博雅这里有我的未来么?努力就好,后来的事情还

2016-01-23 18:08:36 2739 8

原创 Android应用架构概述

通常一个App的成长过程都是这样的:第一阶:先用最少的成本和时间快速把东西做出来。第二阶段:积累一定用户量之后在小步快跑的迭代功能。第三阶段:性能和体验上逐步求精。我发现好多项目在第二阶段和第三阶段耗费了好多本来不应该浪费的人力成本、时间成本。究其原因就是因为前期忽略了合理的架构,我甚至经历过因为前期的设计不合理导致后期技术债务太多项目濒临死掉、整个项目组全员换掉重

2016-01-03 16:22:01 568

原创 不要沦陷程序员30岁问题

2007年高考,11年毕业,时间过得真快,转眼28岁了(身份证登记还弄大了两岁,30岁)。准备离开博雅互动那段时间开始整理简历、回顾自己这些年的经历,发现这些年走的太慢了,圈子太小了,远远赶不上深圳这座城市的变化,更要命的是:候突然意识到已经到了一个相当尴尬的年纪,那段时间我陷入了深深的焦虑之中,不知道下一步该怎么走,再次感到深深的迷茫了。辞了职,我一个人背着包走了两个月,去了很多城市,一个人去随

2015-12-19 21:08:27 2142

原创 MVP 模式在 Android 中的使用

作为码农你应该知道MVC(Model View Control)吧,如果不知道,请自行补脑。MVP(Model View Presenter)是MVC衍生而来的,MVP并不是一个新玩意,很早以前就由某软公司提出,近年来在Android应用开发中越来越多的被提及,越来越重要了。本文简单解介绍MVP的概念、为啥要使用MVP和在Android中如何使用,最后介绍一个Android使用MVP的例子。

2015-12-06 20:36:53 1065

原创 React-native 尝鲜计划-场景切换(Navigator)

在上篇文章《react-native 尝鲜计划-环境搭建》中讲述了react-native 的环境搭建,并初始化了 react-native 的第一个项目。如果你已经完成了上一片文章的学习,并且成功调试第一个 “hello world” 项目,你已成功地经迈出第一步,接下来的学习就会顺利德多。在我成功调试出第一个项目之后,连蒙带差的走读了下原生代码和 index.android.js 代码,脑海里有很多疑问,第一个疑问就是:react-native 如何做多个页面跳转的?相信你也一样,带着带着问题来学习是比

2015-11-21 14:41:29 3923

原创 React-Native尝鲜计划-环境搭建及 hello world

React Native 刚被 Face Book 开源不久,持续引起关注。“learn once,write anywhere” 是每个开发者的追求。目前国内关于 react native 学习资料不多,为了尝鲜,从本篇我文章开始,我决定来学习 React-Native。目前 React 支持 Android 和 iOS 的跨平台开发,这系列文章都将以 Android 为主要阵地,既然是跨平台,其实是大同小异的。本章主要学习两部分内容:一、 环境搭建,二、运行第一个 demo 页面:hello world

2015-11-14 17:25:50 1609

原创 那些有意思的悖论

“这个世界上没有绝对正确的事,这句话绝对正确”最近看到的一句很值得辩思的一句话,还有很多有意思的悖论。时空穿梭悖论时空穿梭的悖论可以分为两种。一种是穿越到过去,一种是预见未来。穿越过去:如果你乘坐时空机回到过去在你祖父祖母相遇之前杀手你祖父会发生什么事?假如你穿越的过去,亲手杀了你的爷爷,那么就不回有你爹的出生,自然也就不会有你的出生,那么没有你,又何来前面说的穿越杀手你爷爷的

2015-11-03 22:48:41 759

原创 protobuf-实践篇

前面两篇文章介绍了 protobuf 的概念用途以及 protobuf 编译器的安装。本章我来写一个简单的例子实践一下 protobuf 。我们知道 protobuf 支持 Java、c++、Python,本章以 Java 为例,写一个小例子。如果懒得看后面的啰嗦,可以直接下载 demo 源码研究。下载支持 java 支持库,即 jar 文件 到 protobuf 的 maven仓

2015-10-25 22:36:50 950

原创 protobuf-安装篇

关于 protobuf 编译器的安装1 下载:https://github.com/google/protobuf/releases,点击这个链接,然后下载release版本:2 解压,打开终端进入你解压的根目录。$ cd protobuf-3.0.0-beta-1/3 输入配置命令  ./configure$ ./con

2015-10-25 21:22:29 1656

原创 protobuf-介绍篇

What are protocol buffers?protobuf 是 protocol buffers的简称,它是结构体数据序列化的协议方法,简单、灵活、高效、自动,更重要的是它垮平台、支持多种语言(目前支持java、c++、python)。类似 XML,但是比 xml 更小、更快速、更简单。你可以一次定义特定的数据结构,然后编译生产特定的语言代码对象(例如java),然后在这

2015-10-25 15:25:14 533

原创 Android-进程和线程

当一个应用(application)组件首次启动时,Android系统会为这个应用启动一个新的进程(process),并为之开启一个单独的线程(thread);如果一个应用组件启动时它所再的应用已经创建了一个进程,则它直接运行在这个进程中。默认情况下,一个应用所以的组件(Activity/Service/BroadCastReceiver/ContentProvider)都运行在一个同一个进程的同

2015-10-24 18:35:16 405

原创 Dexposed热更新-偷偷改掉你的bug

新技术真是层次不穷,八月份阿里做了件深的猿心的一件小事:dexposed 开源了。来看看 dexposed 是个啥?What is it?相信 Android 开发猿猿们都有过这个烦恼: Android 客户端应用上线以后,难免会出现一些 bug ,特别是有些 bug 可能就只需要修改部分一两句代码的事,但是有不得不修复,然后发包。频繁发包,对用户,对开发来说的都是很蛋疼的体验。所以优

2015-10-21 23:37:42 1468

原创 技术小故事-Activity的Launch Mode引起的动画“疑案”

前两天同事在做我们的App注册页面的的时候碰到了这样的一个场景:在注册过程中有这样的一个流程,进入页面(Activity)A,完成输入,再进入页面 B,完成输入,最后在进入页面C;即A-》B-》C。现在问题来了,在 C 中有一个验证逻辑:如果验证成功直接从C挑战到A,同时要干掉B ;如果严重失败,则从 C 中可以依次次back到B到A,同事问我有没有好点的办法?我告诉他可以去看看 Activity

2015-10-20 23:31:23 599

原创 Bound Service 之 Messenger

上一片文章《Bound Service 之本地Binder》介绍了 Service 的bind方法的基本使用。现在再来解释下Bound Service的第二种用法。使用Messenger如果你的service需要向远程进程(remote processes)提供服务,你可以使用Messenger提供接口。这个技术可以使你不用不使用AIDL也能实现跨进程IPC。如果阅读下文有疑问或困难可

2015-10-16 23:34:05 359

原创 Bound Service 之 Binder

Service 是一个可以长久运行在后台不能提供用户界面的一个组件。程序的其他组件可以启动service,service可以在后台运行即便用户切换了应用程序。一个组件可以绑定一个service并且可以和它交互甚至在进程间交互。例如:请求网络,播放音乐、I/O、或者和contentprovider交互,所有这一切都是在后台进行的。  service大致可以有两种方式存在。  star

2015-10-16 23:31:41 487

原创 Messenger解析(和Handler、IBinder、Message的关系)

为了更好的理解bound service利用Messenger来夸进程服务,这里先写一篇文章简单分析下Messenger、Handler、Message、Binder的关系。先来看看Messenger官方的定义:Reference to a Handler, which others can use to send messages to it.This allows for the

2015-10-11 17:15:06 3879

翻译 管理bitmap内存

在上个章节《如何缓存你的Bitmap》中,说明了Bitmap对象的缓存与回收。本章来说Bitmap对象内存的管理,由于Adroid版本的差异,所以bitmap的内存管理方式有所不同。先来简单说下Android系统各个版本管理Bitmap内存的差异,看看管理Bitmap的进化史。Android2.2及以下:当垃圾回收器回收时线程停止,导致渲染延迟。Android2.3以后增加了con

2015-10-07 17:28:53 407

翻译 缓存你的Bitmap对象

在app中通常最占内存、占流量的元素就是图片了,图片往往又无处不在,特别是伴随着list,GridView或者ViewPager出现,这些图片随着你的滑动操作,时而出现在你的屏幕中,时而消失在屏幕之外。   对应滑出屏幕之外的图片,你可以缓存在内存中以便下次加载快速渲染,但这回增加内存的开销,你也可以立即释放掉这部分内存,但下次加载会变的很慢,因为来讲回收影响UI渲染,获取图片资源更加事一个耗

2015-09-27 23:20:02 510

原创 自定义控件-条状、块状菜单

好久来这里了,分享一个demo源码。使用场景效果图相信很多移动端开发者都很熟悉了,通常我们首先想到的就是使用 RelativeLayout 方式处理,例如:        android:layout_width="0dp"        android:layout_height="fill_parent"        android:layout_we

2015-09-26 10:26:21 659

原创 在传统行业努力着的互联网人

"到目前为止整个团队除了豆瓣流还有北邮的高材生、经验丰富的老大哥以及几个深大的小鲜肉。或许有一天我会离开,回到纯互联网公司中,但我希望我能留下一些东西:和小伙伴们一起奋斗的回忆",这是我几个月来很想总结的一句话,也希望自己日后回头看这篇文章时能激励自己不断上进。    两个不错的人,一件看着不错的事   接到万科物业hr的f电话,有些错觉。物业公司要做App?hr说公司

2015-09-22 23:06:34 1528

原创 android多线程下载模块

使用场景apk应用内更新,其他中小文件的下载,断点续传下载等,先来看看效果图:简单方便的调用接口调用者只要设置好下载路径、文件后缀,丢一个url即可开始下载,并且可以根据需要监听进度,例如:FileDownloader mDownloader  = FileDownloader.getInstance(getApplication());mDownloade

2015-09-12 12:09:50 588

android电话、短信黑白名单拦截、电话录音

功能描述: 总的来说这是一个防骚扰的应用,设置黑名单,白名单,通话录音名单。添加到黑名单的联系人或号码将被拒绝来电或短信;添加到白名单的联系人或号码将通过来电或短信(除白名单以外的号码将被拒绝来电或短信),因此逻辑上黑名单和白名单是不能同时开启的;添加到通话录音列表的联系人或号码,连接通话时将会开启录音,挂断时完成录音。先上图,接着分析实现这几个部分的关键技术点,最后附上安装程序a...

2012-05-30 22:39:25 423

python安装包

python安装包,这就是你苦苦寻找了好久的python安装包

2014-11-29

细说业务逻辑

其实,一段时间内,我脑子里对“业务逻辑”的概念也是非常模糊的。但在不断地阅读、思考和实践过程中,这个概念及其相关的内容才在我脑子里渐渐清晰。我想,很多朋友也许也对这个概念不是很了解,所以愿意结合既有资料和自己的思考

2011-10-12

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

TA关注的人

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