- 博客(66)
- 资源 (2)
- 收藏
- 关注
转载 信息传递方式之handler总结
一、Handler的定义:主要接受子线程发送的数据, 并用此数据配合主线程更新UI.解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据, 或者读取本
2016-11-30 10:03:13 418
转载 应用被强杀了怎么办
应用在后台运行时很容易被强杀,这很正常,但是回到前台时,很容易出现空指针的情况。怎么解决这样的问题,且看看Stay的见解。 我们先跳出来看看android的app运行原理。app在后台被强杀,是在内存不足的情况下被强制释放了,也有一些恶心的rom会强制杀掉那些后台进程以释放缓存以提高所谓的用户体验。我们都觉得android rom很恶心,但同时还是用些更恶心的手法去
2016-11-29 22:12:09 230
转载 Android ImageView 正确使用姿势
导语本文主要介绍了ImageView的相关重要方法,从源码角度剖析了一些容易令人混淆或百思不得其解的问题。一、正确合理使用ImageView 的src 和backgroundsrc :为ImageView 原图内容,存放原图大小,不会被拉伸;background:为Imageview的背景,会根据ImageView给定的长宽进行拉伸;在ImageView中,可以同时设置
2016-11-28 20:10:04 258
转载 一个经典例子让你彻彻底底理解java回调机制
以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式:Class A实现接口CallBack callback
2016-11-28 19:36:57 246
转载 Android性能优化之内存篇
下面是内存篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流!1)Memory, GC, and Performance众所周知,与C/C++需要通过手动编码来申请以及释放内存有所不同,Java拥有GC的机制。Android系统里面有一个Generational Heap Memory的模型,系统会根据内存中不同的内存数据类型分别执行不同的GC操作。例如,
2016-11-25 10:49:03 315
转载 安卓开发之自定义控件实现MaterialEditText
按照常规先展示效果图并说明:主要有以下几个效果:edittext中的内容为0时,标签不出现edittext中的内容不为0时,标签开始出现edittext获取焦点时,下划线的颜色/粗细会发生改变edittext失去焦点时,下划线同样发生改变,标签颜色也更改当限制输入字符个数时,右下角计数文字会进行计数超过个数后,下划线和计数文字颜色会发生变化一、继承EditText
2016-11-24 14:41:44 767
转载 Android drawable微技巧,你所不知道的drawable的那些细节
话说微技巧这个词也是我自己发明的,因为drawable这个东西相信大家天天都在使用,每个人都再熟悉不过了,之所以叫微技巧就是对于这个我们再熟悉不过的技术,可能还有一些你所不知道的细节,那今天我们就来一起探究一下这些微小的细节吧。 大家都知道,在Android项目当中,drawable文件夹都是用来放置图片资源的,不管是jpg、png、还是9.png,都可以放在这里。除此之外,还有像select
2016-11-24 11:45:34 268
转载 简谈我所理解的面向对象
“什么是面向对象?”这个问题往往会问到刚毕业的新手or实习生上,也是往往作为一个技术面试的开头题。在这里我们不去谈如何答(fu)好(yan)问(guo)题(qu),仅谈谈我所理解的面向对象。为什么“面向对象”?最早的时候是面向过程。想象一下一堆C语言or汇编堆砌在一起的函数互相调(shang)用(hai)的场景————什么?你说你没学过C语言?那么你就想象一下一个复杂的SQL语
2016-11-24 10:51:47 398
原创 一个Demo快速上手AsyncTask
正所谓说不如做,今天我们通过一个Demo快速上手AsyncTask。为了解决新线程不能更新UI组件的问题,Android提供了许多解决方案,这里我们使用更轻量级的AsyncTask,适用于简单的异步处理,不需借助线程和Handler即可实现。AsyncTask是一个抽象类,继承时需指定如下三个泛型参数:Params 启动任务执行的输入参数的类型,比如HTTP请求的U
2016-11-23 19:58:45 484
原创 Google官方Training读后感-权重、onClick
当前EditText和Button部件只是适应了他们各自内容的大小,如下图所示:这样设置对按钮来说很合适,但是对于文本框来说就不太好了,因为用户可能输入更长的文本内容。因此如果能够占满整个屏幕宽度会更好。LinearLayout使用权重属性来达到这个目的,你可以使用android:layout_weight属性来设置。权重的值指的是每个部件所占剩余空间的大小,该值与同级部件所占空间大小
2016-11-23 15:47:34 521
转载 Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?
今天给大家带来一篇简单易懂的微技巧文章,并没有什么高深的技术点,但重点仍然是在细节,相信还是可以给不少朋友带来帮助的。Dialog和Toast所有人肯定都不会陌生的,这个我们平时用的实在是太多了。而Snackbar是Design Support库中提供的新控件,有些朋友可能已经用过了,有些朋友可能还没去了解。但是你真的知道什么时候应该使用Dialog,什么时候应该使用Toast,什么时候应
2016-11-23 14:49:03 234
原创 算法优解(11)-二叉树的序列化和反序列化
来自左神书中的一道题,在左神核心代码的基础上,添加了二叉树的构建和前序遍历操作,将这道题完善成了一个小Demo,和各位共勉。题目:二叉树的序列化和反序列化。名词解释:* 二叉树的序列化:二叉树被记录成文件* 二叉树的反序列化:通过文件重建二叉树思路:我们通过先序遍历实现序列化,假设序列化的结果字符串为str,初识为"",先序遍历二叉树,如果遇到null节点就在s
2016-11-22 19:49:29 417
原创 必知必会的Android自定义View
当Android系统提供的UI组件不足以满足项目需要时,我们可以通过继承View来派生自定义控件。今天我们就一起来了解必知必会的Android自定义View,View只是一个矩形的空白区域,没有任何内容。Android应用的其他UI组件都继承View,然后在View组件提供的空白区域上绘制外观。接下来我们代码实战自定义View,实现一个跟随手指移动的小球:1.定义类并继承View:
2016-11-22 18:02:42 303
原创 初识Android延时(postDelayed和schedule)
今天我们初识Android延时,分别使用Handler的postDelayed和Timer的schedule实现延时操作。首先我们使用Handler的postDelayed实现延时操作。 new Handler().postDelayed(new Runnable() { @Override public void run(
2016-11-22 17:06:21 2682
原创 你可能不知道的Activity(1)-onPause、配置文件、filter、返回结果
今天我们一起来学习Google官方文档中的Activity部分,梳理一下你可能不知道的Activity。要创建一个activity,你必须创建一个Activity(或者它存在的子类)的子类。 在你的子类里,你需要实现系统调用的回调方法,这些方法用于activity在生命周期中进行事务处理。例如创建,停止,恢复,销毁。其中两个最重要的回调方法分别为:onCreate()你必须实现这个方法
2016-11-22 16:03:40 396 2
转载 Android源码分析-全面理解Context
前言Context在Android中的作用不言而喻,当我们访问当前应用的资源,启动一个新的activity的时候都需要提供Context,而这个Context到底是什么呢,这个问题好像很好回答又好像难以说清楚。从字面意思,Context的意思是“上下文”,或者也可以叫做环境、场景等,尽管如此,还是有点抽象。从类的继承来说,Context作为一个抽象的基类,它的实现子类有三种:Appli
2016-11-22 15:36:37 220
原创 算法优解(10)-合并两个有序的单链表
来自左神书中的一道题,在左神核心代码的基础上,添加了链表的构建和打印操作,将这道题完善成了一个小Demo,和各位共勉。题目:合并两个有序的单链表。思路:逐一比较两个链表的节点将其合并到其中一个链表。核心算法: public static Node merge(Node head1,Node head2){ if(head1 == null ||
2016-11-21 19:30:12 334
原创 10min初识观察者模式
今天学习了Android设计模式源码解析之观察者模式,写一篇读后感,10min快速了解观察者模式。1.模式的定义定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。2.模式的使用场景关联行为场景。需要注意的是,关联行为是可拆分的,而不是“组合”关系;事件多级触发场景;跨系统的消息交换场景,如消息队列、事件总线的处理机制
2016-11-21 17:00:38 406
转载 SDK性能自测小技巧
初始化耗时统计利用时间差:通过这种方式可以较准确的得到SDK的初始化耗时。内存消耗统计获取内存信息方法方法一:使用命令adb shell dumpsys meminfo -d process-name>11方法二:使用IDE工具打开logcat,选中侧边栏的系统信息,选择Memory Usage:内存信息示
2016-11-21 14:42:11 368
转载 WOT2016欧阳辰:小米程序化广告交易平台(MAX)的架构实践
51CTO记者在WOT2016大数据峰会会前采访了小米公司研发总监欧阳辰,他是小米公司MIUI商业产品部的架构师和研发主管,是此次WOT2016大数据峰会重要演讲嘉宾之一。他的演讲主题是小米程序化广告交易平台(MAX)的架构实践。欧阳辰,目前就职小米公司MIUI商业产品部,担任架构师和研发主管,主要负责广告平台系统架构,广告交易系统研发和数据平台。之前在微软工作工作10年,带领团队从事互联
2016-11-21 14:23:09 1190
转载 今日头条的核心架构解析
今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。一、产品背景今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合):5亿注册用户2014年5月1.5亿,2015年5月3亿,2016年5月份为5亿。几乎为成倍增长。
2016-11-18 10:48:38 1482
原创 项目实战:说一说运算符优先级和代码可读性
拿我们项目中的一行代码说事,说一说运算符优先级和代码可读性问题。请大家看一下这一行代码表达的意思和可能出现的问题,请忽略它的业务意义哈。 dto.getStatus() ==1? false :true|| imageDto == null写这行代码的人的初衷是:(dto.getStatus() ==1? false :true)||(imageDto == null)
2016-11-17 20:36:02 453
转载 git stash 命令
关于Git stash命令的使用方法网上一大把,我想记录的是我在使用过程中觉得实用及好用的:当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,我觉得git stash是一个更加便捷的选择。步骤如下:一、添加改动到stash。在原分支 git stash save -a "messeag",网上很多很多资料都没有加 -a 这个
2016-11-17 20:22:14 252
原创 JavaSE-String API compareTo源代码分析
曾记否我们在JavaSE-String API 其他功能接触的compareTo,今天我们深入源代码一探究竟。请看这样一段代码:public class CompareToTest { /** * 权兴权意-2016.11.17 * JavaSE-String API compareTo源代码分析 */ public static void main(String[] a
2016-11-17 14:47:30 379
转载 Android 自分辨式布局
Android自适应不同分辨率或不同屏幕大小的layout布局(横屏|竖屏)一:不同的layoutAndroid手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢?其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会
2016-11-17 10:21:39 532
原创 算法优解(9)-单链表的选择排序
来自左神书中的一道题,在左神核心代码的基础上,添加了链表的构建和打印操作,将这道题完善成了一个小Demo,和各位共勉。题目:给定一个无序单链表的头结点head,实现单链表的选择排序。要求额外空间复杂度O(1)。思路:从未排序链表中找到最小节点small的前一节点smallPre,从而在未排序链表中删除最小节点small,并将最小节点small添加到已排序链表中,由此逐渐
2016-11-16 19:43:17 847
原创 算法优解(8)-删除无序单链表中重复出现的节点
来自左神书中的一道题,在左神核心代码的基础上,添加了链表的构建操作,将这道题完善成了一个小Demo,和各位共勉。 问题:删除无序单链表中重复出现的节点思路:使用HashSet进行重复判断。核心算法: public static void removeNode(Node head){ if(head == null){ return; } HashSet s
2016-11-15 19:42:26 470
转载 【Android开发经验】来来来,同学,咱们讨论一下“只能在UI主线程更新View”这件小事
”只能在UI主线程中更新View“。 这句话很熟悉吧? 来来,哥们,看一下下面的例子[java] view plain copy @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea
2016-11-15 18:02:24 382
转载 Application学习笔记
1:Application是什么?Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在
2016-11-15 17:41:24 277
原创 从Handler到runOnUiThread
曾记否我们通过Handler在主从线程中进行消息通信,定义重写使用···今天我们使用runOnUiThread可以实现同样的效果。以我们之前开发的图片查看器为例:(10min实现一个简易图片查看器(图片缓存))此时将Handler的一套代码全部注释(Handler的定义、handleMessage方法的重写、Message的定义和发送)接下来就是见证奇迹的时刻,直接使用runOnU
2016-11-15 16:16:58 356
原创 JavaSE-String API 其他功能
今天我们一起来学习一下String API 其他功能。(replace、trim、compareTo) 下面我们通过官方API+Coding的方式进行学习:1.通过replace进行字符串的替换功能:replacepublic String replace(char oldChar, char newChar)返回一个新的字符串,
2016-11-15 14:45:55 245
转载 迎战双11:1号店的五位一体保障机制
一年一度的购物狂欢又到来了。双11,早已不再是光棍节的代名词,而是一场名副其实的购物狂欢节。在消费者购物买买买的时候,是各商家背后的IT部门的技术保障。“过个讲究的双11”,这是1号店今年双11的slogan,1号店是如何的讲究呢?1号店技术部平台保障部技术总监顾复告诉笔者,1号店在保障双11活动时,以业务分析为起点,以质量改进为目标,以架构、运维和安全为主线,识别评估风险,制定保障措施,
2016-11-15 09:56:02 352
原创 算法优解(7)-相加链表
来自左神书中的一道题,在左神核心代码的基础上,添加了链表的构建和输出操作,将这道题完善成了一个小Demo,和各位共勉。 题目:两个单链表生成相加链表:假设链表中的每一节点的值都在0-9之间,于是我们可以使用整个链表作为一个整数。 例如:链表9->3->7(代表整数937)和链表6->3(代表整数63)相加后得到链表1->0->0->0(代表整数1000)。思路:利用栈结
2016-11-14 20:57:38 266
转载 WeakReference 在android中的应用
首先我们来看一段代码public class AutoActivity extends Activity { Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { }; }; @Override protected void onCreate(Bundl
2016-11-14 18:03:04 195
原创 JavaSE-String API 转换功能
今天我们一起来学习一下String API 转换功能。(getBytes、toCharArray、valueOf、toLowerCase、toUpperCase、concat、+)下面我们通过官方API+Coding的方式进行学习: String s = "Hello World!";通过getBytes将字符串->字节数组:getBytespublic byte
2016-11-14 17:46:32 259
原创 Android TextUtils那些事(isEmpty()的误解)
我们经常使用TextUtils.isEmpty()来判断字符串是否为空,有很多人认为空格也能返回true,然而空格不等于空!此外,isEmpty还能判断字符串长度是否为0。请看源码: /** * Returns true if the string is null or 0-length. * @param str the string to be examine
2016-11-14 11:27:07 2127
转载 大型网站技术架构(2):架构要素和高性能架构
基本思路首先可以对整个架构进行分层,一般可以分为 应用层,服务层,数据层;实践中,大的分层结构中还可以继续分层,比如 应用层还可以继续分为 视图层 和 业务逻辑层,服务层也可以继续细分为 数据接口层 逻辑处理层 等通过分层,我们把一个庞大的系统切分为不同的部分,便于分工开发和维护;各层之间相互有一定的独立性,在网站的开发中可以根据不同的需求进行相应的调整逻辑上分层之后,在物
2016-11-14 10:37:58 302
转载 Android开发 屏蔽Button setClickable和setEnabled
今天想让按键暂时无效,满足一定条件下才可以被用户按到。最初以为是setClickable,谁知搞错了。请看手册:[java] view plain copy print?public void setClickable (boolean clickable) Since: API Level 14 Sets whether t
2016-11-12 15:21:36 418
转载 不想被淘汰!该学习哪种新的主流编程语言,这里给你答案!
对于程序员来说,熟悉多种语言和框架很重要,原因是这个行业发展太快,技术淘汰的速度也很快,3年不学新东西就可能落伍了。我在加州大学伯克利分校学编程的学生们经常问我哪种编程语言最流行。这个问题很简单,但回答起来可一点也不简单。不妨先说说为什么人们想知道答案。通常对于学生来说,他们问哪种语言最流行,是因为他们想学习有职业前景的编程语言。并且对大多数人来说,从事并不吃香的行业领域没有多大意
2016-11-12 13:56:02 830 1
原创 cache和files目录的区别
在10min实现一个简易图片查看器(图片缓存)中我们使用到了Cache缓存。那么cache和files目录究竟有什么区别呢?今天我们一起来探索一下。1.写好布局文件,2个Button分别绑定2个click事件,实现cache和files: <Button android:onClick="clickCache" android:layout_width
2016-11-11 14:45:48 3563
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人