Android
文章平均质量分 62
刘星石
这个作者很懒,什么都没留下…
展开
-
Android打包的那些事
使用gradle打包apk已经成为当前主流趋势,我也在这个过程中经历了各种需求,并不断结合gradle新的支持,一一改进。在此,把这些相关的东西记录,做一总结。1. 替换AndroidManifest中的占位符我想把其中的${app_label}替换为@string/app_name12345android{ defaultConfig{转载 2015-11-09 11:53:47 · 299 阅读 · 0 评论 -
RecyclerView 实现下拉刷新和自动加载
RecyclerView是 Android 兼容包V21中新推出的列表类,它的自定义化强的优点足以让它能够取代GridView和ListView,本文将结合SwipeRefreshLayout与RecyclerView讲解如何实现下拉刷新和自动加载的代码需要的依赖以下版本自行更新Ja转载 2016-02-26 15:14:16 · 501 阅读 · 0 评论 -
如何「偷」Android 的内存?
之前在做一个内存优化的时候,使用到了MemoryFile,由此发现了MemoryFile的一些特性以及一个非常trickly的使用方法,因此在这里记录一下What is itMemoryFile是android在最开始就引入的一套框架,其内部实际上是封装了android特有的内存共享机制Ashmem匿名共享内存,简单来说,Ashmem在Android内核中是被注册成一个特殊的字符设转载 2016-02-29 10:24:16 · 420 阅读 · 0 评论 -
Android中脱离WebView使用WebSocket实现群聊和推送功能
WebSocket是Web2.0时代的新产物,用于弥补HTTP协议的某些不足,不过他们之间真实的关系是兄弟关系,都是对socket的进一步封装,其目前最直观的表现就是服务器推送和聊天功能。更多知识参考:如何理解 TCP/IP, SPDY, WebSocket 三者之间的关系? 今天的重点是讲如何在Android中脱离WebView使用WebSocket,而不是在Web浏览器使用,如果转载 2016-02-29 11:46:42 · 1498 阅读 · 0 评论 -
我的Android面试经验总结
原文出处: 张涛 摘要“基础 Android 知识掌握的不错,学习能力也不错。但是基础知识部分比较薄弱,有些概念和逻辑掌握不清。” 感谢春林的这句话。MVC,MVP 和 MVVM架构的定义Volley相关Volley的磁盘缓存Volley缓存命中率的优化Volley缓存文件名的计算推送心跳包是TCP包还转载 2016-03-14 17:44:15 · 1435 阅读 · 0 评论 -
创建安卓应用的 30 个经验教训
这个世界上有两种人-从经验教训中学习的人以及听从别人建议的人。这里是我一路走来学到的一些东西,分享给大家:在添加任何第三方party之前,请三思:这真的是一个成熟的项目吗?如果一个东西用户看不到,就不要绘制它!除非真的需要,否则别使用数据库;达到65k方法数限制来的非常快,真的,非常快!不过 multidexing 可以拯救你;RxJava 是 AsyncTasks 以及其它杂碎的最佳转载 2016-03-01 09:38:27 · 239 阅读 · 0 评论 -
2016年Android市场的8个大胆预测
据 techrepublic 报道,每年的年底,总是有很多评论者和预测者喜欢猜想来年的情况,为了秉承这种传统,本文对 2016 年的 Android 市场提出了 8 个大胆预测。1、无锁版设备占统治地位现在还看不到这点,但无锁版设备将主导 Android 市场, 而且不是在暗地里这么做,这些设备将进入聚焦灯下,告诉人们为什么它们可能是 Android 生态系统中最重要的发展。201转载 2016-03-01 11:20:22 · 246 阅读 · 0 评论 -
基于universalimageloader实现的图片加载控件BlurImageView
原文出处: 王亟亟 昨天做了个梦,梦醒后觉得还是要更努力的学习,所以不多说废话,直接上货。BlurImageView效果图:流程:实现原理,加载2张图片一张为很小的缩略图,一张为原图,缩略图加载完后做放大模糊处理,然后展开进度条加载原图,原图加载成功后替换缩略图。How to use?Grade:转载 2016-03-25 14:43:37 · 435 阅读 · 0 评论 -
Android安全攻防战,反编译与混淆技术完全解析(上)
原文出处: 郭霖 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值得骄傲的事情。不过单纯从技术角度上来讲,掌握反编译功能确实是一项非常有用的技能,可能平常不太会用得到,但是一旦真的需要用到的了,而你却不会的话,那就非常头疼了。另外既然别人可以反编译程序,我们当然有理由应该对程序进行一定程度的保护,因此代码混淆也是我们必须要掌握的一项技术。那么最近的两篇文章我们就围绕转载 2016-03-25 16:36:20 · 416 阅读 · 0 评论 -
Android安全攻防战,反编译与混淆技术完全解析(下)
原文出处: 郭霖 在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码、反编译资源、以及重新打包等内容。通过这些内容我们也能看出来,其实我们的程序并没有那么的安全。可能资源被反编译影响还不是很大,重新打包又由于有签名的保护导致很难被盗版,但代码被反编译就有可能会泄漏核心技术了,因此一款安全性高的程序最起码要做到的一件事就是:对代码进行混淆。混淆代码并不是让转载 2016-03-25 16:48:09 · 644 阅读 · 0 评论 -
干货|建议初创团队起初也要构建分布式应用
干货|建议初创团队起初也要构建分布式应用 本文内容整理自W-Time技术分享沙龙-天津站现场演讲《一切都是分布的》,演讲者:李傲,问啊联合创始人,前中交车联网总架构。 好多人都会问什么是架构师?其实架构师的定义很宽泛,前端后端的定义都不一样。作为后端出身的架构师,我认为后端并不是大家想的封装组件,它要定义的是规划,规划模块之前的关系。在一台机器搞不定时怎么办?答:集群!原创 2016-04-08 16:51:31 · 505 阅读 · 0 评论 -
MAT使用入门
原文出处: 高建武 (Granker,@高爷) MAT简介MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可转载 2016-04-12 16:58:00 · 801 阅读 · 0 评论 -
Android 内存泄漏案例和解析
原文出处: Drakeet (@drakeet) Android 编程所使用的 Java 是一门使用垃圾收集器(GC, garbage collection)来自动管理内存的语言,它使得我们不再需要手动调用代码来进行内存回收。那么它是如何判断的呢?简单说,如果一个对象,从它的根节点开始不可达的话,那么这个对象就是没有引用的了,是会被垃圾收集器回收的,其中,所谓的 “根节点” 往往是一个转载 2016-03-28 17:06:09 · 439 阅读 · 0 评论 -
看Facebook是如何优化React Native性能
原文出处: facebook 译文出处:@Siva海浪高 该文章翻译自Facebook官方博客,传送门React Native 允许我们运用 React 和 Relay 提供的声明式的编程模型,写JavaScript来构建我们的 iOS 和 Android 的应用。这样的做法使得我们的代码更精简,更容易理解和阅读,这些代码还可以在多个平台共享。我们也可以加快迭代速度(因为在转载 2016-04-14 14:33:22 · 450 阅读 · 0 评论 -
与独角兽公司技术高管切磋交流,问啊W-Time上海站活动全程免费!
专注为IT技术从业者服务的“问啊”W-Time技术分享沙龙,上海站确认!上海的程序员们,一起来嗨?W-Time 是什么? W-Time技术分享沙龙,是由“问啊”APP主办的系列主题沙龙。 W取自WenA-Winner-Wonderful三者的首字母,“问啊”与成功者一同感受技术的精彩!原创 2016-04-27 17:43:55 · 1019 阅读 · 0 评论 -
为RecyclerView打造通用Adapter 让RecyclerView更加好用
原文出处: 张鸿洋 (Granker,@鸿洋_ )一、概述记得好久以前针对ListView类控件写过一篇打造万能的ListView GridView 适配器,如今RecyclerView异军突起,其Adapter的用法也与ListView类似,那么我们也可以一步一步的为其打造通用的Adapter,使下列用法书写更加简单:简单的数据绑定(单种Item)多种Item Type转载 2016-04-18 10:29:02 · 337 阅读 · 0 评论 -
Android开发中,那些让你相见恨晚的方法、类或接口
原文出处: liukun (@TheFresher ) PS:本文类容来自我在知乎上对Android开发中,有哪些让你觉得相见恨晚的方法、类或接口?这一问题的回答,目前就总结这些,日后若有新的发现,随时补充。欢淫点赞。getParent().requestDisallowInterceptTouchEvent(true);剥夺父view 对touch 事件的处理权,谁用转载 2016-04-19 13:19:28 · 318 阅读 · 0 评论 -
如何让你的App更流畅
本文由 伯乐在线 - sphynx 翻译,zhengjunchenzjc 校稿。未经许可,禁止转载!英文出处:Junfeng Yang | Sarvar Dhillon。欢迎加入翻译组。在过往的博文中,我们聊了监控App的性能的重要性。这次我们就来给你示范具体怎么操作。我们向全球最流行的一些 App 的开发团队(包括微信,雅虎新闻摘要)取经了开发流畅 App 的最佳实践经验。通过我们自转载 2016-03-11 11:41:27 · 1438 阅读 · 0 评论 -
App架构设计经验谈:展示层的设计
App架构设计经验谈:展示层的设计三层架构中,数据层和业务层都已经做过了简单的分享,最后,就剩下展示层了。本篇就给各位分享下我在展示层设计方面的一些经验心得。展示层是三层架构中最复杂的一层了,需要考虑的包括但不限于界面布局、屏幕适配、文字大小、颜色、图片资源、提示信息、动画等等。展示层也是变化最频繁的一个层面,每天改得最多的就是界面了。因此,展示层也是最容易变得混乱不堪的一个层转载 2016-03-10 13:52:26 · 342 阅读 · 0 评论 -
详细解析 RxAndroid 的使用方式
原文出处: C.L. Wang(@SpikeKing ) RxAndroid是RxJava的扩展, 优雅地处理异步请求. RxAndroid配合Lambda表达式, 精简处理回调, 使程序更具有可读性. Rx作为Android最优秀的开源库之一, 极大地提高生产力, 我们需要掌握. 本文由浅入深, 介绍一些常见的使用方法, 并附有源码.更多: http://www.wa转载 2016-04-01 17:10:18 · 5238 阅读 · 0 评论 -
安卓7.0首批截图公布:惊现汉堡菜单
今天谷歌在开发者页面公布了首批Android N(安卓7.0)截图,从截图中能够了解到的一点是安卓7.0设置界面中会添加汉堡式菜单。从上面的截图中可以看到,在蓝牙设置选项中,界面的左上角出现了一个汉堡式菜单,而这在Android 6.0中是没有的。这个汉堡菜单的作用是,点击一下,就会出现所有设置选项的列表,点击你想要转到的设置选项就可以了,相当于点击返回键然后选择相应的设置选项,但转载 2016-03-01 15:06:58 · 696 阅读 · 0 评论 -
Android代码优化小技巧
这篇文章主要介绍一些小细节的优化技巧,当这些小技巧综合使用起来的时候,对于整个App的性能提升还是有作用的,只是不能较大幅度的提升性能而已。选择合适的算法与数据结构才应该是你首要考虑的因素,在这篇文章中不会涉及这方面。你应该使用这篇文章中的小技巧作为平时写代码的习惯,这样能够提升代码的效率。通常来说,高效的代码需要满足下面两个规则:不要做冗余的工作如果能避免,尽量不要分配内存转载 2016-03-02 14:19:55 · 311 阅读 · 0 评论 -
Android多分辨率适配实践【1】使用字体图标(内含两枚神器)
目录Android多分辨率适配实践【0】基础适配篇(撰写中)Android多分辨率适配实践【1】使用字体图标,精准控制不同分辨率的图标样式(内含两枚神器)Android多分辨率适配实践【2】Iconify中文使用说明Android多分辨率适配实践【3】Iconify扩展,自制或导入SVG字体图标库(撰写中)...大约每周一篇的频率更新,算是学习实践笔记,喜欢请关注哦。转载 2016-03-02 15:56:44 · 616 阅读 · 0 评论 -
【Android注释技巧】Android函数上面的注释你是怎么写的?(Eclipse中)
前言:你用过Eclipse快捷键 Alt + Shift + J 么?你看过源码么?如果看过,你注意过源码上面的注释么?你知道为什么看源码注释有些标识的参数可以直接点击跳转么?先出个题目,定义一个最简单的Person类,三个属性,一个name,一个age,一个性别,一个带所有属性参数的构造函数,你会怎么写?public class Person { private String转载 2016-03-02 16:08:56 · 907 阅读 · 0 评论 -
【Android】不弹root请求框检测手机是否root
由于项目需要root安装软件,并且希望在合适的时候引导用户去开启root安装,故需要检测手机是否root。最基本的判断如下,直接运行一个底层命令。(参考https://github.com/Trinea/android-common/blob/master/src/cn/trinea/android/common/util/ShellUtils.java)也可参考csdnhttp:转载 2016-03-02 16:30:03 · 392 阅读 · 0 评论 -
Android游戏开发之游戏帧动画的播放与处理
带你走进游戏开发的世界之游戏帧动画的处理 1.帧动画的原理 帧动画帧动画顾名思义,一帧一帧播放的动画就是帧动画。 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧的切换罢了。 如图所示:人物行走动画的实现方式, 4帧行走动画在播放区域 一帧一帧向左切换转载 2016-03-02 16:52:20 · 627 阅读 · 0 评论 -
android开发我的新浪微博客户端-载入页面UI篇(1.1)
本软件设定用户第一个接触到的功能就是页面载入等待功能,这个功能对使用者来说就是一个持续1、2秒钟的等待页面,在用户等待的同时程序做一些必要的检查以及数据准备工作,载入页面分为UI篇和功能篇,从表及里首先是UI的实现,一个软件除功能之外还得有一个光鲜的外表也是非常重要的,尽管本人设计水平一般但是还是亲自操刀用ps先做了一下设计效果图如下: 一、接下来的任务就是在androi转载 2016-03-02 17:05:40 · 520 阅读 · 0 评论 -
Android 日常开发总结的技术经验 60 条
1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效。2. 数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架LiteOrm库,超级清晰且重心可以放在业务上不用关心数据库细节。3. 全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中.4. 不要相信转载 2016-03-03 13:43:35 · 229 阅读 · 0 评论 -
谈谈Android中的Divider
在Android应用开发中会经常碰到一个叫divider的东西,就是两个View之间的分割线。最近工作中注意到这个divider并分析了一下,竟然发现内有乾坤,惊为天人…ListView的divider1. 定制divider的边距ListView的divider默认是左右两头到底的,如何简单的设置一个边距呢?利用inset或者layer-list都可以简单的实现,代码如下转载 2016-03-03 15:42:35 · 656 阅读 · 0 评论 -
Android 6.0 运行时权限处理完全解析
一、概述随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化。对于6.0的几个主要的变化,查看查看官网的这篇文章http://developer.android.com/intl/zh-cn/about/versions/marshmallow/android-6.0-changes.html,其中当然包含Runtim转载 2016-03-04 14:08:12 · 352 阅读 · 0 评论 -
Android Activity生命周期与启动模式
Activity的完整生命周期如下图:Activity的加载模式有四种:standard: 标准模式,默认的加载模式,每次通过这种模式启动目标Acitivity,都创建一个新的实例,并将该Activity添加到当前栈中。singleTop: 与标准模式类似,只有当Activity位于Task顶时,系统不会重新创建目标Activity的示例,而是直接复用已有的Acti转载 2016-03-29 14:58:46 · 252 阅读 · 0 评论 -
Android JSBridge的原理与实现
原文出处: 安卓弟(@_安卓弟) 在Android中,JSBridge已经不是什么新鲜的事物了,各家的实现方式也略有差异。大多数人都知道WebView存在一个漏洞,见WebView中接口隐患与手机挂马利用,虽然该漏洞已经在Android 4.2上修复了,即使用@JavascriptInterface代替addJavascriptInterface,但是由于兼容性和安全性问题,基本上我们不转载 2016-03-07 16:42:24 · 1064 阅读 · 0 评论 -
Android安全–ELF文件格式解析
一、简介 可执行链接格式(Executable and Linking Format)最初是由 UNIX 系统实验室(UNIX System Laboratories,USL)开发并发布的,作为应用程序二进制接口(Application Binary Interface,ABI)的一部分。工具接口标准(Tool Interface Standards,TIS)委员会将还在发展的 ELF转载 2016-03-08 10:58:53 · 1748 阅读 · 0 评论 -
Android:我为何要封装DialogFragment?
我为何要封装DialogFragment最近在重构项目代码,项目中创建对话框用的是Dialog,AlertDialog。但是官方推出了DialogFragment来代替Dialog。那我就去认真的了解下DialogFragment。DialogFragmentDialogFragment是在Android3.0的时候被引入的,从其名字可以很直观的看出它是一种基于Fragment转载 2016-03-08 11:21:19 · 650 阅读 · 0 评论 -
App架构设计经验谈:业务层的设计
原文出处: Keegan小钢 业务层其实并不复杂,但是大部分开发人员对其职责并没有理解清楚,从而使其沦落为一个数据中转站。我之前分享过的Android项目重构之路系列中提到的核心层,其实就是这里所讲的业务层。但有不少读者反映,他们在实际项目中就只是做一下参数检查,然后直接调用API,与展示层对接的接口基本也与API的接口一致的。这样,业务层无疑就已经变为了一个数据中转站。业务层的职转载 2016-03-09 14:00:03 · 358 阅读 · 0 评论 -
dagger2 让你爱不释手:终结篇
本文作者: 伯乐在线 - 牛犇 。未经作者许可,禁止转载!欢迎加入伯乐在线作者团队。前言如果您对dagger2的概念,整个依赖注入框架还不清楚,可以先了解下我的前2篇文章:《dagger2让你爱不释手:基础依赖注入框架篇》《dagger2让你爱不释手:重点概念讲解、融合篇》这2篇文章也收到好多网友的好评和提问,谢谢大家的支持。我大概总结了下提的问题:转载 2016-04-01 15:50:55 · 489 阅读 · 0 评论 -
配置Gradle构建
构建基础配置Android Studio包含一个顶级的构建文件和每个模块的构建文件。构建文件被称为 build.gradle,它是一个纯文本文件,它使用Groovy语法来配置由Android Gradle插件提供的元素。在大多数情况下,你只需要编辑模块级别的构建文件。例如,BuildSystemExample项目的app模块的构建文件是像这样的:apply plugin转载 2016-04-20 11:48:45 · 572 阅读 · 0 评论