Android
文章平均质量分 92
火山石
架构师,技术Leader
展开
-
Android线程间通信机制——深入理解 Looper、Handler、Message
Android中的Looper , Handler , Message有什么关系?本篇博客目的首先为大家从源码角度介绍3者关系,然后给出一个容易记忆的结论。1、 概述Handler 、 Looper 、Message 这三者都与Android异步消息处理线程相关的概念。那么什么叫异步消息处理线程呢?异步消息处理线程启动后会进入一个无限的循环体之中,每循环一次,从其内部的消息队列中取翻译 2015-10-27 11:35:25 · 1601 阅读 · 0 评论 -
AlarmManager(全局定时器/闹钟)详解
AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。指定时长或以周期形式执行某项操作。通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似。都有两种相似的用法:(1)在指定时长后执行某项操作(2)周期性的执行某项操作 AlarmManager对象配合Intent使用,可以定时的开启一个Activity, 发送一个BroadCast,或翻译 2015-11-01 10:12:57 · 1635 阅读 · 0 评论 -
Android之PendingIntent的深入理解
PendingIntent字面意义:等待的,未决定的Intent。要得到一个pendingIntent对象,使用方法类的静态方法 getActivity(Context, int, Intent, int), getBroadcast(Context, int, Intent, int), getService(Context, int, Intent, int) 分别对应着Inte翻译 2015-11-02 11:26:55 · 1196 阅读 · 0 评论 -
Android常见Crash原因总结(二)
Android平台程序崩溃大家都应该遇到过,force close和ANR应该是大家遇到较多的。这里把Android平台程序崩溃的各种类型做一个简述和原因列举。1.ANR(可见ANR):发生场景:应用发生ANR。崩溃症状:系统弹出窗口询问用户选择“Force Close”或者“Wait”。 “Force Close”将杀掉发生ANR的原创 2016-05-24 20:32:08 · 6265 阅读 · 0 评论 -
Android常见Crash类型分析(一)
问题1. java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 分析mInflater.inflate(R.layout.eg_refresh_message, this, fal原创 2016-05-24 20:27:37 · 5313 阅读 · 0 评论 -
Android WebView编程的那些坑(一)
最大的坑是ROM不同,webkit不同,差异性很大。再加上google的坑,真是坑上加坑。比如js注入问题,比如client回调接口时序问题,比如内存回收问题,etc1、内存泄漏问题,尤其注意Android 5.0系统的WebView移除不了的问题;2、WebKit线程数不能控制,低效,例如,如果js效率出现问题或者大量js执行,直接就导致连HTTP请求都延迟,自己抓包原创 2016-05-26 18:21:47 · 2657 阅读 · 1 评论 -
Android学习基础之onSaveInstanceState和onRestoreInstanceState触发的时机
先看Application Fundamentals上的一段话: Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the instance原创 2016-05-17 14:38:57 · 645 阅读 · 0 评论 -
数据库的原理,一篇文章搞定(三)
合并联接合并联接是唯一产生排序的联接算法。注:这个简化的合并联接不区分内表或外表;两个表扮演同样的角色。但是真实的实现方式是不同的,比如当处理重复值时。1.(可选)排序联接运算:两个输入源都按照联接关键字排序。2.合并联接运算:排序后的输入源合并到一起。排序我们已经谈到过合并排序,在这里合并排序是个很好的算法(但是并非最好的,如果内存足够用的话,还是原创 2016-05-17 20:17:12 · 11125 阅读 · 3 评论 -
数据库的原理,一篇文章搞定(二)
客户端管理器客户端管理器是处理客户端通信的。客户端可以是一个(网站)服务器或者一个最终用户或最终应用。客户端管理器通过一系列知名的API(JDBC, ODBC, OLE-DB …)提供不同的方式来访问数据库。客户端管理器也提供专有的数据库访问API。当你连接到数据库时:管理器首先检查你的验证信息(用户名和密码),然后检查你是否有访问数据库的授权。这些权限由DBA分配原创 2016-05-17 20:16:00 · 11737 阅读 · 0 评论 -
数据库的原理,一篇文章搞定(一)
一提到关系型数据库,我禁不住想:有些东西被忽视了。关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少【译者注:百度为您找到相关结果约1,850,000个…】 ,而且找到的那些文章都很短。现在如果你查找最近时髦的技术(大数据、NoSQL或JavaScript原创 2016-05-17 20:15:09 · 55032 阅读 · 12 评论 -
OkHttp使用教程
Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient。关于HttpURLConnection和HttpClient的选择>>官方博客尽管Google在大部分安卓版本中推荐使用HttpURLConnection,但是这个类相比HttpClient实在是太难用,太弱爆了。OkHttp是一个相对成熟的解决方案,据说Android4.4的源码原创 2016-05-31 11:11:36 · 3660 阅读 · 0 评论 -
Anaroid WebView API详解
android提供了webView控件专门用来浏览网页使用WebView时,在程序中装载WebView控件,可以把WebView写到布局中,也可以动态New出WebView实例,可以设置属性,比如:颜色、字体、要访问的网址等。通过loadUrl方法设置当前webView需要访问的网址。在创建WebView时,系统有一个默认的设置,我们可以通过WebView.getSettings来得到这个设置原创 2016-05-08 09:03:55 · 1433 阅读 · 0 评论 -
Android5.1系统WebView内存泄漏场景
Android WebView原创 2016-05-08 09:13:17 · 1891 阅读 · 0 评论 -
jvm类加载器和双亲委派模型
类加载器按照层次,从顶层到底层,分为以下三种: (1)启动类加载器(Bootstrap ClassLoader) 这个类加载器负责将存放在JAVA_HOME/lib下的,或者被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的类库加载到虚拟机内存中。启动类加载器无法被Java程序直接引用。 (2)扩展类加载器(Extension ClassLoader) 这原创 2016-05-08 09:14:50 · 942 阅读 · 0 评论 -
Android Parcelable和Serializable的区别
本文主要介绍Parcelable和Serializable的作用、效率、区别及选择,关于Serializable的介绍见Java 序列化的高级认识。1、作用Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializa原创 2016-05-08 09:16:53 · 918 阅读 · 0 评论 -
理解Annotation
一、概念 Annontation是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。 更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的。Annontation像原创 2016-05-08 09:20:05 · 954 阅读 · 0 评论 -
java注解之二
从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证、处理或者进行部署。 Annotation提供了一种为程序元素(包、原创 2016-05-08 09:22:03 · 924 阅读 · 0 评论 -
Hybrid APP 架构设计思路
关于Hybrid模式开发app的好处,网络上已有很多文章阐述了,这里不展开。 本文将从以下几个方面阐述Hybrid app架构设计的一些经验和思考。 原文及讨论请到 github issue通讯作为一种跨语言开发模式,通讯层是Hybrid架构首先应该考虑和设计的,往后所有的逻辑都是基于通讯层展开。Native(以Android为例)和H5通讯,基本原理:原创 2016-05-08 09:31:13 · 1884 阅读 · 0 评论 -
AndroidDevTools
收集整理Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材等。欢迎大家推荐自己在Android开发过程中用的好用的工具、学习开发教程、用到设计素材。如果你觉得本站对你有用,你可以点击底部的分享按钮,把本站分享到社交网络让你的小伙伴和更多的人知道。或者可以考虑对本站捐赠支持下,支持我把本站做的更好,帮助更多的人。目原创 2016-05-08 09:46:41 · 6143 阅读 · 0 评论 -
Android okHttp网络请求库详解
okhttp 是一个 Java 的 HTTP+SPDY 客户端开发包,同时也支持 Android。需要Android 2.3以上。特点OKHttp是Android版Http客户端。非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。默认情况下,OKHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题。如果你的应用程序中集成了OKHttp,Retrofit默认会使用原创 2016-05-31 16:35:50 · 655 阅读 · 0 评论 -
Android 网络之 Volley+OkHttp+Https
Volley 已经发布很长时间了, 也已被广泛应用, 相关教程到处都是. 本文只说两个值得注意的地方.本文讲解部分比较少, 请参阅提供的相关链接. 完整的实现代码在 Github dodocat/AndroidNetworkDemo 可能看起来比这里更清晰.使用 OkHttp 作为传输层的实现.Volley 默认根据 Android 系统版本使用不同的 Ht原创 2016-05-31 19:29:01 · 753 阅读 · 0 评论 -
Android常见漏洞
Android常见漏洞漏洞名称: Log敏感信息泄露漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞漏洞描述: 漏洞可导致中间人攻击修改建议: 建议不要忽略ssl认证错误 漏洞名称: sql注入漏洞漏洞描述: 漏洞可能导致用户数据原创 2016-05-08 20:54:01 · 10912 阅读 · 2 评论 -
Android app security安全问题总结
数据泄漏本地文件敏感数据不能明文保存,不能伪加密(Base64,自定义算法等)android:allowbackup=false. 防止 adb backup 导出数据Activity intent 的数据泄漏。比如通过 getRecentTask 然后找到对应的intent 拿到数据。Broadcast Intent,自己应用内使用 LocaBroadcast,避免被别的应用收到,或者原创 2016-05-08 21:05:15 · 6831 阅读 · 2 评论 -
Android View绘制回调方法流程
Android中View的性命周期,挪用 invalidate() 战 requestLayout() 会触收哪些方式,一张图就可以讲解的很详细。 该图确切一看便特别很是清楚、让人简略的懂得View的性命。 Android中View的生命周期,调用invalidate()和requestLayout()会触发哪些方法,一图道破天机。转载 2016-05-08 21:08:49 · 1407 阅读 · 0 评论 -
Android WebView的缓存方式分析
WebView的缓存可以分为(1)页面缓存和(2)数据缓存。 页面缓存是指当WebView加载一个网页时的html、JS、CSS等页面或者资源数据。这些缓存资源是由于浏览器的行为而产生,开发者只能通过配置HTTP响应头来影响浏览器的行为才能间接地影响到这些缓存数据。 他们的索引存放在/data/data/package_name/databases下。他们的文件存放在/翻译 2016-05-08 21:15:12 · 2666 阅读 · 0 评论 -
Android中Java和JavaScript交互
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。如何实现实现Java和js交互十分便捷。通常只需要以下几步。WebView开启JavaScript脚本执行WebView设置供JavaScript调用的交互接口。客户端和网原创 2016-05-08 22:04:39 · 1284 阅读 · 1 评论 -
一个URL的组成
URL的组成 URL由三部分组成:协议类型,主机名和路径及文件名。通过URL可以指定的主要有以下几种:http、ftp、gopher、telnet、file等。 URL的组成URL的组成协议 1、protocol(协议):指定使用的传输协议,下表列出 protocol 属性的有效方案名称。最常用的是HTTP协议,它也是目前WWW中应用最广的协议。 file原创 2016-05-08 22:12:04 · 8853 阅读 · 0 评论 -
Android项目中的各个模块框架设计
作为资深Android工程师,现对项目开发中的各个模块搭建,进行概要梳理如下:Android UI框架,开发人员需要达到专家级网络框架浏览框架图片加载框架图片裁剪压缩工具类客户端并发框架 线程池设计 (1)顺序执行任务的线程池。(2)并发执行任务的线程池 设计下载模块下拉刷新模块Menu菜单模块TitleBar模块动态飘小红点模块动原创 2016-05-08 21:43:32 · 3750 阅读 · 0 评论 -
常用的正则表达式-匹配中英文、字母和数字
java 正则表达式 常用原创 2016-05-08 08:33:51 · 8849 阅读 · 0 评论 -
Java StringBuilder 和 StringBuffer 源码分析
简介StringBuilder与StringBuffer是两个常用的操作字符串的类。大家都知道,StringBuilder是线程不安全的,而StringBuffer是线程安全的。前者是JDK1.5加入的,后者在JDK1.0就有了。下面分析一下它们的内部实现。继承关系public final class StringBufferextends AbstractStringBuilder原创 2016-05-08 22:29:40 · 1365 阅读 · 0 评论 -
用JavaScript搭建高性能App - React Native实战教程
直接上网址:http://gold.xitu.io/entry/5697a52160b2f5adfd5ea0f2/viewhttp://gold.xitu.io/entry/5698908d9d22730284e3a5c6/view原创 2016-05-08 22:34:34 · 503 阅读 · 0 评论 -
蜻蜓FM 涉嫌诈骗投资人和广告主源代码剖析
本文主要内容,引用自知乎的这篇文章:如何评价蜻蜓 FM 伪造用户活跃度等数据感谢“左莫”、“任正”等热心正义的网友--左莫,任正的最早的回答猜测已经被蜻蜓FM通过创新工场关系让知乎删除了,而且此贴已经锁定,蜻蜓FM还在不停赞下面无关紧要的垃圾评论。希望大家一起站出来抵制这种造假和疑似诈骗的行为。蜻蜓FM是一款音频app,最近我反编译了他的源代码,主要原因是最近有篇文章:不过蜻蜓转载 2016-05-08 22:37:23 · 5334 阅读 · 2 评论 -
java线程池的原理及实现
1、线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 一个线程转载 2016-06-02 20:45:44 · 578 阅读 · 0 评论 -
OkHttp使用教程——网络操作之OkHttp, Volley以及Gson
写这篇文章的动机在安卓项目中有一个问题可能无法避免:网络。不管你是加载图片,请求API数据还是从因特网上获得一个字节,你都是在使用网络。鉴于网络在安卓中的重要性与基础性,当今安卓开发者面临的问题之一就是使用何种解决方案。有许多优秀的库,你可以用各种方式把一个用在另一个之上。之所以这么多的人致力于开发网络库是因为 Android framework所提供的办法原创 2016-05-31 11:13:31 · 1762 阅读 · 0 评论 -
Android内核解读-应用的安装过程
前言我们知道,在android手机上安装一个apk很简单,只要打开apk文件,默认就会弹出安装界面,然后点击确定,经过若干秒后,apk就安装成功了,可是你知道apk的安装过程是什么吗?你知道android系统在安装一个apk的时候都干了什么吗?在本文中,将一一解答这个问题。简单来说,apk的安装过程分两步:第一步,将apk文件复制到程序目录下(/data/app/);第二步,为应用创建数据转载 2016-06-07 18:19:26 · 696 阅读 · 0 评论 -
GitHub上最火的Android开源项目整理
摘要:截至目前,在GitHub“最受欢迎的开源项目”系列文章中我们已介绍了40个Android开源项目,对于如此众多的项目,你是Mark、和码友分享经验还是慨叹“活到老要学到老”?今天我们将继续介绍另外34个Android开源项目。此前,CSDN移动频道推出的GitHub平台上“最受欢迎的开源项目”系列文章引发了许多读者的热议,在“直接拿来用!最火的Android开源项目”系列文章(一转载 2016-05-21 21:20:19 · 6831 阅读 · 0 评论 -
GitHub上最火的Android开源项目(一)
GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上。更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。为此,CSDN特整理了在GitHub平台上最受欢迎的Android及iOS开源项目,以飨开发者。 下面,就让我们一起来看看,在GitHub平台上,究竟有哪些Andro转载 2016-05-21 21:33:20 · 1008 阅读 · 0 评论 -
好用的Markdown编辑器汇总
Markdown 是一种简单的、轻量级的标记语法。用户可以使用诸如 * # 等简单的标记符号以最小的输入代价生成极富表现力的文档。 Markdown具有很多优点:写作中添加简单符号即完成排版,所见即所得。让你专注于文字而不是排版。格式转换方便,Markdown 的文本你可以轻松转换为 html、pdf等。可以保存称纯文本 支持Markdown的编辑器太多,功能也不完全一原创 2016-06-24 18:19:35 · 1544 阅读 · 0 评论 -
Android WebView 缓存机制和模式详解
当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹:我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下.WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即AppCache)。一、网页缓存1、缓存构成/dat原创 2016-06-16 02:10:48 · 9510 阅读 · 2 评论 -
各大HotFix热补丁方案分析和比较
最近开源界涌现了很多热补丁项目,但从方案上来说,主要包括Dexposed、AndFix、ClassLoader(来源是原QZone,现淘宝的工程师陈钟,在15年年初就已经开始实现)三种。前两个都是阿里巴巴内部的不同团队做的(淘宝和支付宝),后者则来自腾讯的QQ空间团队。开源界往往一个方案会有好几种实现(比如ClassLoader方案已经有不下三种实现了),但这三种方案的原理却徊然不同,那么让我原创 2016-06-25 17:25:12 · 3021 阅读 · 0 评论