- 博客(44)
- 资源 (1)
- 收藏
- 关注
原创 Android的多进程
前言上次面试被问到多进程的知识,回答不上来,真的感觉很羞耻。以下内容很多来自参考文章,侵删。一、什么情况下要用到多进程参考《Android多进程使用场景》,感谢。 常驻后台任务应用:类似音乐类、跑步健身类、手机管家类等长时间需要在后台运行的应用。这些应用的特点就是,当用户切到别的应用,或者关掉手机屏幕的时候,应用本身的核心模块还在正常运行,提供服务。如果因为手机内存过低,或者是进程重...
2018-07-30 16:58:56
445
原创 Android的Handler
背景知其然要知其所以然,为什么会有Handler的出现?举个例子,假设我们在一个Thread中直接刷新某个TextView,并且每毫秒就刷新一次,那么TextView的绘制会疯掉,而且用户体验也不好。所以为了控制UI的刷新频率,Android规定非UI线程不能直接控制UI组件,只能通过Handler来处理。概念解析非UI线程计算出结果后,将结果封装到Message里,调用Handler...
2018-07-12 17:42:15
280
原创 What?HashMap的实现原理?
参考文章:HashMap实现原理及源码分析前段时间面试被问到HashMap的实现原理,完全懵逼,只知道它的存储的是键值对,下面好好理解一下。什么是哈希表看过《数据结构》的都知道,数据结构有很多种,如以下: 数组: 采用一段连续的存储单位来存储数据。 线性链表: 对中间元素来说,头结点存储上一个元素的引用,尾结点存储下一个元素的引用,中间存储数据。链表对于新增、删除的操作来说,只...
2018-07-11 22:42:15
334
原创 Android性能优化之内存优化
背景最近手上一个项目,类似于订单系统,通过Android Profiler工具观察发现,重复打开关闭订单详情,会导致内存占用不断攀升,最后会导致APP操作变慢,甚至内存溢出而崩溃,急需要找出原因。初步猜测是一些代码导致对象在堆中暂用内存单元无法被释放,造成内存泄露。网上查查,哪些容易忽略的情况会导致内存泄露。 参考《Android内存优化——常见内存泄露及优化方案》 侵删单例导致内存泄露...
2018-07-11 22:41:46
230
转载 Android性能优化之布局优化
参考《Android性能优化之布局优化》 侵删绘制的原理Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。CPU负责把UI组件计算成Polygons,Texture纹理,然后交给GPU进行栅格化渲染。GPU进行栅格化渲染。硬件展示在屏幕上。为...
2018-07-11 11:03:03
244
原创 HashMap的实现原理
背景标题中的几个关键字在许多文章都会看到,但是我们并不知道它们是什么意思,下来一起来学习一下。哈希表参考谈谈哈希表,感谢原作者,侵删。举一个例子:我们在程序里,要用一个数据结构去表示全班40名学生的姓名、学号、电话、家庭住址,可以用个Student对象来表示每个学生,然后以数组的形式组织全部Student,这样组织数据没有问题。当要对这个数据进行频繁移动、增减的时候,我们可以链...
2018-07-05 18:00:12
432
原创 单向链表的java实现
如果需要快速访问数据,很少或不插入和删除元素,就应该用数组,相反,如果需要经常插入和删除的就需要用链表了。实例一设计一个节点类,以String为数据的保存内容,手工把各节点串联起来,然后从根节点开始输出整条链表数据。class Node{ private String data; private Note next; //表示保存下一个节点 publ...
2018-07-05 16:19:10
251
原创 树
背景前面已经学习了线性结构和表结构,这些数据结构适用于一部分的数据组织,但是对于局域分支结构的数据,就需要另一种数据结构了—树。这种分支结构的数据与数据之间可能有上下级关系、可能有整体与部分的关系,如现实世界中的族谱、公司的组织结构、书的章节等。树的定义是一个递归的定义,即树的定义中又用到了树的概念。二叉树它的特点是每个结点最多有两个子女,分别成为该结点的左子女和右子女。就是说,在...
2018-07-05 16:11:57
263
原创 栈和队列
之前已经说过,数据结构是数据的一种组织形式,根据不同的需求就会出现不同的数据结构,栈和队列就是两种特殊的线性表数据结构,Android四大组件之一Activity的就是以栈的结构组织的。 栈其可定位为只允许在表的末端进行插入和删除的线性表,遵循后进先出的规则。在这个规则之下,基于数组的存储表示实现的栈成为顺序栈,基于链表的存储表示实现的栈成为链式栈。顺序栈的实现在于使用了数组这个基本...
2018-07-05 15:56:49
208
原创 线性表
背景上一篇文章说过,数据的结构分为线性结构和非线性结构,而线性结构表示结构中所有数据元素都按某种次序排列在一个序列中。根据对线性结构中数据元素存取方法的不同,可分为直接存取结构、顺序存取结构和字典结构。比如:数组、文件 对于直接存取结构,可以直接存取某一指定项而不须先访问其前驱,就像数组、文件,可以根据下标直接存取某一数组元素,可以按记录号直接检索记录集合或文件中的某一记录。比如:单...
2018-07-05 14:51:29
211
原创 数据结构基础
一、定义与目的 数据结构就是数据的组织形式,在应用中涉及各种各样的数据,为了存储它们,组织它们,需要讨论它们的归来及它们之间的关系,从而建立相应的数据结构,并以此实现要求的软件功能。二、分类 1. 线性结构:也成为线性表,在这种结构中所有数据元素都按某种次序排列在一个序列中。根据对线性结构中数据元素存取方法的不同,又可分为直接存取结构、顺序存取结构和字典结构。对于直接存取结构,可以直接存取...
2018-07-05 14:33:35
229
原创 Android,什么是MVP模式?
梗概 MVP模式是MVC模式在Android上的一种变体,在MVC模式中,Activity应该是属于View这一层,它既承担了View,同时也包含了一些Controller的东西在里面,这对于开发与维护来说不太友好,耦合度太高。把Activity的View和Controller抽离出来就变成了View和Presenter,这就是MVP模式。先熟悉一下MVC模式 M层:适合做一些业务逻辑处理...
2018-07-02 14:31:38
1364
原创 不规范的服务端接口开发
背景 最近在做一个一体机的APP,跟某工程师做接口的对接,发现接口返回的数据极为混乱,虽说都是Json串,但是给客户端解析数据带来了极大的困难,希望能给做接口的看看这篇文章,引以为戒。1.data数据返回不规范 不规范:"data": [ id: "1" name: “TCL电视" ]规范:"data": { ...
2017-08-02 14:49:06
517
原创 【经验】提高开发效率
背景 随着事情越来越多,我们必须提高我们的工作效率,才能有更多的时间去深入学习更多的知识。下面我将会把我在Android项目中运用到的一些提高开发效率的经验分享出来,如果你有更好的建议,恳请指导。
2017-02-07 10:49:43
484
转载 2016 TOP 10 ANDROID LIBRARY
原文地址:http://stormzhang.com/2017/01/16/top-10-android-library-of-2016/原文来自帅B张!关注他有一年多了,学习很多,也希望各位学习Android的朋友关注他,感谢他一年以来的指导,在此贴下他的公众号: RxJava地址:https://github.com/ReactiveX/RxJava2016 年 Android 界最火的莫过于
2017-01-17 21:51:49
419
原创 集成第三方组件--七鱼客服
背景 最近做商城APP,里面需要用到客服咨询的功能,马上到网上找看有什么支持的SDK,环信、融云、网易七鱼等等,翻看了这几家的SDK文档,发现还是网易的最为友好,而且客户端的UI最为美观舒服,所以就选定它了!老板说了,价格不用考虑。
2016-12-27 13:28:40
4542
6
原创 真正解决App启动时白屏/黑屏
背景 过去点击App图标时,App启动时总会出现短暂的白屏/黑屏,这是一个非常不好的体验,下来我们就一起来解决这个问题。
2016-11-24 17:47:59
1473
原创 集成第三方组件--个推
背景 很多时候,我们的APP需要接入接收推送的功能,市面上有许多提供推送服务的SDK,比如小米推送、极光推送、个推推送。由于各个厂商都希望减少后台进程,以提高系统的运行速度,所以推送服务进程很多时候会被停止,当然他们不会停止自己的推送服务,打比方说小米手机不会停止小米推送服务。所以大家集成推送SDK时,应多考虑市场占有率较大的手机,由于小米手机占有率较高,个人推荐小米推送。
2016-11-08 12:06:19
1073
原创 Activity切换动画效果
背景 参考网易新闻,打开新页面时,是从右侧切换过来,关闭时是切换回右侧。网上有很多方法,但是使用后都感觉不满意,决定自己写一个。
2016-11-02 15:54:32
320
原创 Android 相机或相册选择图片裁剪
背景 这是一个我们经常使用的功能,比如上传头像、身份证,本功能可选择相机或相册图片后,进入裁剪页面,并可返回Bitmap格式的图片。
2016-11-02 15:42:43
623
原创 Android开发中常犯的错误
背景 另一篇《Android开发中需要注意的坑》记录的是各种奇葩的坑,其中大多数的兼容性问题。而这一篇写的是开发中容易犯的一些代码编写错误。
2016-10-26 16:22:38
569
原创 Android本地存储目录研究
背景 所有Android设备都有两个文件存储区域:内部存储和外部存储尽管app默认安装在内部存储中,但可以在manifest文件中指定 android:installLocation 的属性,这样app便可安装在在外部存储中。当 APK 非常大且它们的外部存储空间大于内部存储时,用户更青睐这个选择。本篇文章针对的三星手机的目录,其他厂商的手机可能略有不同,请注意。
2016-10-24 10:57:57
949
原创 Java基础--Android中泛型的应用(二)
背景 上一篇《 Java基础–Android中泛型的应用(一)》介绍了泛型在Android开发中的应用,致使减少了代码的冗余量,这里来介绍一下Google的Gson对泛型实体类的解析的问题。这也得益于怪盗kidou 关于《你真的会用Gson吗?》的文章。
2016-10-23 11:28:37
1317
原创 Android自定义View--垂直ViewPager加跑马灯
背景 不多说,直接看此图。 关键技术 ViewPager有个setPageTransformer方法可以设置页面切换时的动画:public void setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer)/** * 自定义Pager切换模式 */class DefaultTransform
2016-10-21 16:37:06
927
原创 Java基础--Android中泛型的应用(一)
背景 之前我们知道泛型在Java中意味着什么特性,但貌似在项目中很少应用到它,如果应用恰当,能够减少许多冗余的代码,也能让你的代码变得更加安全。
2016-10-20 15:33:33
2811
原创 使用Intent传递对象的好处
背景 在某些情况下,我们需要使用到Intent去传递一个自定义对象,这样能够减少许多不必要的代码。查阅一下,传递的对象类需要实现Serializable接口或Parcelable接口,下面我们来介绍一下如何选择,及如何传递。Serializable与Parcelable的选择 Serializable是JavaSE本身就支持的,Parcelable是Android特有功能,效率比实现Serial
2016-10-19 16:02:34
562
原创 Android 无线调试设备
背景 我们都知道使用USB线连接手机是非常麻烦的事情,经常要拔插拔插,对硬件接口也是有损伤的,以下介绍两种在同一局域网下调试设备的方法,其实原理都是一样的,只是第二种方法会比较方便。通过adb命令连接 手机要联到电脑同一局域网内,在命令行下: adb tcpip 5555 adb connect http://xxx.xxx.xxx.xxx (xxx是你手机的ip)通过工具连接 1.去h
2016-10-13 23:07:09
553
原创 Android Drawable--Shape
继上一篇《Android Drawable Resources》,这里来分析shape的使用,值得注意的是此shape可以作为之前各Drawable里item的元素,所以可以让Drawable Resources更加多变。
2016-10-12 18:32:40
477
原创 微信分享,图标背景黑色问题解决
背景 在做微信分享,分享带图标的链接时,并没有达到我们想要的效果,图标背景是黑色的,如下两张图。 而我们要的效果是这样的: 下来我们想办法给该图标背面加一层白色背景。 XML方法解决 这里用到了Drawable Resources 里的layer list知识。 res/drawable/layer_icon.xml<?xml version="1.0" encoding="ut
2016-10-12 17:03:28
18614
原创 Android Drawable--总览
背景 App很多页面都要显示一些图标,我们也经常使用@drawable直接引用图标,但是Android提供更多对drawable进行定义的方式,让显示更加多样化,下面将一一对这些技术进行介绍。总览 绘图资源(Drawable Resources)是一种让Graphic绘制到屏幕的资源,在Android中能通过getDrawable(int)获取该资源,又或者通过@drawable获取,这些资源包
2016-10-11 14:52:23
354
原创 Java基础--接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。接口 接口中的方法默认是public abstract方法,所以累在实现接口方法是必须给出方法体,并且一定要用public来修饰,而且接口中的常量默认是public static常量。
2016-09-30 17:42:09
481
原创 Android开发中需要注意的坑
背景 此文纯粹总结开发Android以来遇到的一些坑,一来为了防止再次掉坑,二来是希望后面的朋友能躲开这些坑。另外还编写了《 Android开发中常犯的错误》。
2016-09-30 11:06:34
1277
原创 Android自定义View--加载动画
背景 一直觉得Android系统自带的加载动画过于简单,看久了容易产生视觉疲劳,所以有时候有必要定义一些有趣的动画;也因为平时我们开发时多集中在业务与性能上的处理,对动画这一块使用得比较少;下面就来介绍一个加载动画代码的编写。最终效果如下: 技术介绍 目前Android里有三种动画模式,分别是property animation,view animation,drawable animatio
2016-09-30 10:32:05
623
原创 Android自定义View--定义属性
很多时候,我们的App里面存在一些重复使用的布局,每次都需要使用大量xml代码去布局,特别是遇到要整体修改的时候,那就得一个一个去修改,即使使用了通用的style,也会有大量要修改的情况。所以我们可以使用自定义View来解决此问题。
2016-09-29 17:45:28
438
原创 代码管理--Git提交代码免输入密码
最近使用了BitBucket作为远程仓库管理代码,因每次push代码的时候都需要输入账号密码,它们提供了SSH协议使push代码不需要再输入账号密码。
2016-05-06 14:44:19
2736
C++编程思想
2012-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人