
Android
文章平均质量分 73
sgwhp
这个作者很懒,什么都没留下…
展开
-
Android连AppFog,响应不更新
在AppFog上部署了一个java的服务,Android客户端使用HttpClient或者HttpURLConnection连接服务器,当客户端请求修改数据库,之后再刷新页面,发现数据是旧的。直接连数据库,明显数据已经写入到了数据库中。百思不得其解,从HttpClient更换到HttpURLConnection都无解。最后在Get请求的Url加上一个变化的参数,这里使用时间System.curre原创 2013-03-22 14:06:53 · 905 阅读 · 0 评论 -
binder学习笔记
学习资料 1.Android Bander设计与实现 - 设计篇 :强烈推荐此文,对binder整体设计讲得比较清楚,十分容易读懂。 2.红茶一杯话Binder:强烈推荐此文,这是一个系列,对binder驱动的具体实现做了详细分析。全文读下来基本对binder就了解得差不多了。 3.《深入理解Android:卷1》中的binder章节:以MediaPlayerService为例分析利用bind原创 2015-05-29 15:59:17 · 1164 阅读 · 0 评论 -
从TransactionTooLargeException谈到binder的内存管理
前言最近在Activity间传输数据时遇到了TransactionTooLargeException这个异常。了解过binder的看到transaction估计就能猜到这个异常应该跟binder有关。但还不敢百分之百确定,有两个猜测,第一是binder驱动的共享内存不足;第二是Parcel打包数据时有内存限制。网上搜到stackoverflow上有人说过binder驱动限制数据传输的内存为1m。这个原创 2015-09-07 23:46:51 · 3238 阅读 · 1 评论 -
如何制作一面智能镜子
MirrorOnTheWall前言创意来源:HomeMirror 原文提到了一个东西,tow-way mirror(双向镜)。这个创意就是利用了单向镜(双向镜)光线强的一面无法看到光线弱的一面这个原理来实现遮挡住镜子后面的平板而同时又能显示屏幕上面的字。看过《红番区》的应该知道单向镜是什么了。 原作已经很好了,为什么要重做一个呢?首先,HomeMirror使用的天气接口在国内使用并不是十分准确;原创 2015-10-01 23:34:52 · 10955 阅读 · 0 评论 -
APM之实现篇
在前文中已经详细介绍了APM的android端的原理,接下来会通过代码实现记录某类异常日志这个小功能来深入理解APM的实现原理。场景如下,记录所有捕获的IndexOutOfBoundsException。前文中提到,APM一般分为3个部分,plugin、agent和具体的业务代码。本文也将会按这三个分类来介绍。 注:由于篇幅有限,本文所展示的只有部分关键代码,有兴趣的可自行阅读github上的源码原创 2016-01-01 17:48:13 · 6269 阅读 · 5 评论 -
浅析fresco
fresco是facebook主导的一个开源图片缓存库,从它提供的示例程序comparison来看,fresco貌似比其他的几个目前android主流的图片缓存库(glide,picasso,uil等)更快更节省内存。接下来就看看它到底是如何做到的。注:本文分析基于0.8.1版本。背景知识lru与SoftReference那些年的爱恨情仇:很久很久以前,android的内存缓存还用SoftRefe原创 2015-11-05 00:27:22 · 5360 阅读 · 2 评论 -
APM之原理篇
APM,应用性能监控,有new relic等产品,对APM感兴趣的应该不会不知道它了。主要功能就是统计分析应用的CPU、内存、网络、数据库、UI等性能,并提供错误日志捕获。编码人员需要做的仅仅是使用它提供的插件和jar包,增加一两行代码即可。接下来,本文会以android端的APM为例,分析它到底是用什么技术实现的,涉及到具体相关业务的,只会简单介绍,不作深入分析。ASM ASM是一个字节码操作原创 2015-12-09 18:07:43 · 14135 阅读 · 27 评论 -
Instant Run浅析
Instant RunInstant run是在android studio 2.0引入的,能让我们快速构建运行app。其中包含了四种情况:hot swap、warm swap、cold swap以及无法使用instant run的情况。下面部分引用官方文档进行说明: * hot swap This is the fastest type of swap and makes changes原创 2016-09-03 15:16:16 · 2473 阅读 · 0 评论 -
Instant Run与热修复
简介 对Instant Run还不了解的可以阅读我上一篇文章 Instant Run浅析 。Instant Run与目前很多主流的热修复方案都使用了mutidex技术,andfix除外。其中微信tinker的方案也借鉴了Instant Run。更多热修复的介绍可参考HotFix原理介绍及使用总结。总的来说大致可以分成两类,如andfix的native hook方案,qq空间、微信、手q等的分dex原创 2016-11-06 18:45:12 · 1291 阅读 · 0 评论 -
android自定义View——实现Dribbble的[Open & Close]设计
1、提要Open & Close 在Dribbble的Popular程度能排在所有Shots的首页。而且设计比较简洁,实现起来的难度也相对较小,可以拿来练练手。本文源码猛击:Roujiamo2、分析动画开始前是经典的hamburger,由上中下三条直线组成,以l1、l2、l3表示,动画结束后变成了关闭按钮。关闭的“X“是由hamburger的l1、l3经过旋转变换而来。其中l1绕右原创 2015-04-14 18:21:38 · 1399 阅读 · 1 评论 -
【ffmpeg学习记录】ndk-r10d编译ffmpeg-2.6
roman10写过一篇很详细的使用ndk编译ffmepg的教程,本文仅在此文的基础上稍作修改使其能顺利编译ffmpeg-2.5.3版本。前面两步没啥好说的,直接看第三步,把ndk的路径修改为你自己的路径,注意./configure这段,要把其中的空行给删掉:./configure \ --prefix=$PREFIX \ --enable-shared \ --di原创 2015-03-13 17:36:21 · 1188 阅读 · 0 评论 -
增量升级(省流量更新)的Android客户端实现
By sgwhp (http://blog.youkuaiyun.com/sgwhp)转载请注明出处用过类似360手机助手应该对省流量更新都很熟悉了。详细资料可以参考以下两个博客:浅析android应用增量升级Android应用增量升级本文在以上两篇博客的基础上再增加了异常处理,并将生成的so库和Native代码一起打包。1、准备工具(1)bspatch源码(点击下原创 2013-06-02 23:58:17 · 12492 阅读 · 5 评论 -
混淆包含SlidingMenu、gson等Android代码的proguard写法
在混淆包含SlidingMenu的代码时,可能会报以下错误:can't find superclass or interface com.google.android.maps.MapActivity...如果还使用到了gson来序列化或者反序列化json,程序还会抛出NullPointerException,这是因为代码被混淆后,成员变量以及getter、setter的名字都变了,这原创 2013-07-15 22:08:55 · 7577 阅读 · 0 评论 -
cocos2d-x-2.1.4在NDK r9下的编译问题
jni/../../../cocos2dx/platform/android/CCCommon.cpp: In function 'void cocos2d::CCLog(char const*, ...)':jni/../../../cocos2dx/platform/android/CCCommon.cpp:44:72: error: format not a string literal原创 2013-07-31 09:12:49 · 9742 阅读 · 13 评论 -
EditText在弹出、隐藏软键盘或者布局滚动后SetError文字显示不全的解决办法
最简单的办法是在提示文字后面加入若干个空格。有另外一种做法是使用html格式来显示文字,这可以解决文字完全不显示的问题,但是文字部分被截断的问题能不能解决,没试过,不太清楚。不管用哪种方法,提示文字应该尽量简短。原创 2013-08-06 11:12:17 · 3195 阅读 · 0 评论 -
Android防止内存泄漏以及MAT的使用
Android发生内存泄漏最普遍的一种情况就是长期保持对Context,特别是Activity的引用,使得Activity无法被销毁。这也就意味着Activity中所有的成员变量也没办法销毁。本文仅介绍如何避免这种情况的发生,其他如Bitmap没有及时回收导致的OOM异常暂不讨论。一、防止内存泄漏什么情况下会长时间保持对某个Activity的引用呢?主要有以下两种情况:1、某个st原创 2013-08-08 22:01:08 · 7292 阅读 · 2 评论 -
Android使用TouchDelegate增加View的触摸范围
by sgwhp,转载请注明。还不知道TouchDelegate这个东西的可以先看一下API,这里大致说一下它的作用:假设有两个View,分别是v1,v2,我们可以通过v1的setTouchDelegate(bounds, v2)来委派触摸事件,其中bounds是一个Rect。v1中,落在这个范围的TouchEvent都会传给v2。既然是这样,那我们可以通过设置某个view的p原创 2013-09-03 11:26:50 · 15784 阅读 · 3 评论 -
使用sdk19编译带SlidingMenu库的项目
可能会出现以下两个错误:INSTALL_FAILED_INSUFFICIENT_STORAGE、INSTALL_FAILED_MISSING_SHARED_LIBRARY原创 2014-08-26 00:44:41 · 803 阅读 · 0 评论 -
android studio 2.3与instant run
前言 目前最新的as 2.3上,instant run的cold swap部署方案与之前的版本相比已经发生巨大变化。之前是通过分dex来实现动态部署,而最新的2.3上则是通过split apks技术。看as 2.2的源码,只有部署到6.0以上的机子才会使用split apks方案。as 2.3则是5.0都会用该方案。需要说明的是,在安装时会通过adb install-multiple指令一次性安装原创 2017-03-11 21:07:05 · 3305 阅读 · 0 评论