自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android的多进程

前言上次面试被问到多进程的知识,回答不上来,真的感觉很羞耻。以下内容很多来自参考文章,侵删。一、什么情况下要用到多进程参考《Android多进程使用场景》,感谢。 常驻后台任务应用:类似音乐类、跑步健身类、手机管家类等长时间需要在后台运行的应用。这些应用的特点就是,当用户切到别的应用,或者关掉手机屏幕的时候,应用本身的核心模块还在正常运行,提供服务。如果因为手机内存过低,或者是进程重...

2018-07-30 16:58:56 367

原创 Android的Handler

背景知其然要知其所以然,为什么会有Handler的出现?举个例子,假设我们在一个Thread中直接刷新某个TextView,并且每毫秒就刷新一次,那么TextView的绘制会疯掉,而且用户体验也不好。所以为了控制UI的刷新频率,Android规定非UI线程不能直接控制UI组件,只能通过Handler来处理。概念解析非UI线程计算出结果后,将结果封装到Message里,调用Handler...

2018-07-12 17:42:15 243

原创 What?HashMap的实现原理?

参考文章:HashMap实现原理及源码分析前段时间面试被问到HashMap的实现原理,完全懵逼,只知道它的存储的是键值对,下面好好理解一下。什么是哈希表看过《数据结构》的都知道,数据结构有很多种,如以下: 数组: 采用一段连续的存储单位来存储数据。 线性链表: 对中间元素来说,头结点存储上一个元素的引用,尾结点存储下一个元素的引用,中间存储数据。链表对于新增、删除的操作来说,只...

2018-07-11 22:42:15 282

原创 Android性能优化之内存优化

背景最近手上一个项目,类似于订单系统,通过Android Profiler工具观察发现,重复打开关闭订单详情,会导致内存占用不断攀升,最后会导致APP操作变慢,甚至内存溢出而崩溃,急需要找出原因。初步猜测是一些代码导致对象在堆中暂用内存单元无法被释放,造成内存泄露。网上查查,哪些容易忽略的情况会导致内存泄露。 参考《Android内存优化——常见内存泄露及优化方案》 侵删单例导致内存泄露...

2018-07-11 22:41:46 190

转载 Android性能优化之布局优化

参考《Android性能优化之布局优化》 侵删绘制的原理Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。CPU负责把UI组件计算成Polygons,Texture纹理,然后交给GPU进行栅格化渲染。GPU进行栅格化渲染。硬件展示在屏幕上。为...

2018-07-11 11:03:03 205

原创 HashMap的实现原理

背景标题中的几个关键字在许多文章都会看到,但是我们并不知道它们是什么意思,下来一起来学习一下。哈希表参考谈谈哈希表,感谢原作者,侵删。举一个例子:我们在程序里,要用一个数据结构去表示全班40名学生的姓名、学号、电话、家庭住址,可以用个Student对象来表示每个学生,然后以数组的形式组织全部Student,这样组织数据没有问题。当要对这个数据进行频繁移动、增减的时候,我们可以链...

2018-07-05 18:00:12 365

原创 单向链表的java实现

如果需要快速访问数据,很少或不插入和删除元素,就应该用数组,相反,如果需要经常插入和删除的就需要用链表了。实例一设计一个节点类,以String为数据的保存内容,手工把各节点串联起来,然后从根节点开始输出整条链表数据。class Node{ private String data; private Note next; //表示保存下一个节点 publ...

2018-07-05 16:19:10 218

原创

背景前面已经学习了线性结构和表结构,这些数据结构适用于一部分的数据组织,但是对于局域分支结构的数据,就需要另一种数据结构了—树。这种分支结构的数据与数据之间可能有上下级关系、可能有整体与部分的关系,如现实世界中的族谱、公司的组织结构、书的章节等。树的定义是一个递归的定义,即树的定义中又用到了树的概念。二叉树它的特点是每个结点最多有两个子女,分别成为该结点的左子女和右子女。就是说,在...

2018-07-05 16:11:57 206

原创 栈和队列

之前已经说过,数据结构是数据的一种组织形式,根据不同的需求就会出现不同的数据结构,栈和队列就是两种特殊的线性表数据结构,Android四大组件之一Activity的就是以栈的结构组织的。 栈其可定位为只允许在表的末端进行插入和删除的线性表,遵循后进先出的规则。在这个规则之下,基于数组的存储表示实现的栈成为顺序栈,基于链表的存储表示实现的栈成为链式栈。顺序栈的实现在于使用了数组这个基本...

2018-07-05 15:56:49 175

原创 线性表

背景上一篇文章说过,数据的结构分为线性结构和非线性结构,而线性结构表示结构中所有数据元素都按某种次序排列在一个序列中。根据对线性结构中数据元素存取方法的不同,可分为直接存取结构、顺序存取结构和字典结构。比如:数组、文件 对于直接存取结构,可以直接存取某一指定项而不须先访问其前驱,就像数组、文件,可以根据下标直接存取某一数组元素,可以按记录号直接检索记录集合或文件中的某一记录。比如:单...

2018-07-05 14:51:29 171

原创 数据结构基础

一、定义与目的 数据结构就是数据的组织形式,在应用中涉及各种各样的数据,为了存储它们,组织它们,需要讨论它们的归来及它们之间的关系,从而建立相应的数据结构,并以此实现要求的软件功能。二、分类 1. 线性结构:也成为线性表,在这种结构中所有数据元素都按某种次序排列在一个序列中。根据对线性结构中数据元素存取方法的不同,又可分为直接存取结构、顺序存取结构和字典结构。对于直接存取结构,可以直接存取...

2018-07-05 14:33:35 194

原创 Android,什么是MVP模式?

梗概 MVP模式是MVC模式在Android上的一种变体,在MVC模式中,Activity应该是属于View这一层,它既承担了View,同时也包含了一些Controller的东西在里面,这对于开发与维护来说不太友好,耦合度太高。把Activity的View和Controller抽离出来就变成了View和Presenter,这就是MVP模式。先熟悉一下MVC模式 M层:适合做一些业务逻辑处理...

2018-07-02 14:31:38 1281

原创 不规范的服务端接口开发

背景 最近在做一个一体机的APP,跟某工程师做接口的对接,发现接口返回的数据极为混乱,虽说都是Json串,但是给客户端解析数据带来了极大的困难,希望能给做接口的看看这篇文章,引以为戒。1.data数据返回不规范 不规范:"data": [ id: "1" name: “TCL电视" ]规范:"data": { ...

2017-08-02 14:49:06 474

原创 【经验】提高开发效率

背景 随着事情越来越多,我们必须提高我们的工作效率,才能有更多的时间去深入学习更多的知识。下面我将会把我在Android项目中运用到的一些提高开发效率的经验分享出来,如果你有更好的建议,恳请指导。

2017-02-07 10:49:43 443

原创 【工具】提高开发效率的一些

此处记录一些能真正提高开发效率的工具。

2017-02-07 10:47:51 1698 2

转载 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 378

原创 使用SVN过程中遇到的奇葩问题

背景 这里为了记录在使用SVN时遇到的各种奇葩问题及解决;

2017-01-17 15:28:12 475

原创 常用的优秀开源项目

背景 这里会收集很多常用的开源项目,防止自己忘记,也给大家做个参考。咱不说使用方法,各位可以到去搜搜,一搜一大把。

2017-01-09 14:48:02 389

原创 Android ScrollView的各种适配

背景 这里是为了解决在ScrollView包裹下,出现的各种奇葩问题。

2017-01-05 16:25:05 891

原创 集成第三方组件--七鱼客服

背景 最近做商城APP,里面需要用到客服咨询的功能,马上到网上找看有什么支持的SDK,环信、融云、网易七鱼等等,翻看了这几家的SDK文档,发现还是网易的最为友好,而且客户端的UI最为美观舒服,所以就选定它了!老板说了,价格不用考虑。

2016-12-27 13:28:40 4344 11

原创 真正解决App启动时白屏/黑屏

背景 过去点击App图标时,App启动时总会出现短暂的白屏/黑屏,这是一个非常不好的体验,下来我们就一起来解决这个问题。

2016-11-24 17:47:59 1366

原创 集成第三方组件--个推

背景 很多时候,我们的APP需要接入接收推送的功能,市面上有许多提供推送服务的SDK,比如小米推送、极光推送、个推推送。由于各个厂商都希望减少后台进程,以提高系统的运行速度,所以推送服务进程很多时候会被停止,当然他们不会停止自己的推送服务,打比方说小米手机不会停止小米推送服务。所以大家集成推送SDK时,应多考虑市场占有率较大的手机,由于小米手机占有率较高,个人推荐小米推送。

2016-11-08 12:06:19 1017

原创 Activity切换动画效果

背景 参考网易新闻,打开新页面时,是从右侧切换过来,关闭时是切换回右侧。网上有很多方法,但是使用后都感觉不满意,决定自己写一个。

2016-11-02 15:54:32 289

原创 Android 相机或相册选择图片裁剪

背景 这是一个我们经常使用的功能,比如上传头像、身份证,本功能可选择相机或相册图片后,进入裁剪页面,并可返回Bitmap格式的图片。

2016-11-02 15:42:43 581

原创 Android开发中常犯的错误

背景 另一篇《Android开发中需要注意的坑》记录的是各种奇葩的坑,其中大多数的兼容性问题。而这一篇写的是开发中容易犯的一些代码编写错误。

2016-10-26 16:22:38 505

原创 Android本地存储目录研究

背景 所有Android设备都有两个文件存储区域:内部存储和外部存储尽管app默认安装在内部存储中,但可以在manifest文件中指定 android:installLocation 的属性,这样app便可安装在在外部存储中。当 APK 非常大且它们的外部存储空间大于内部存储时,用户更青睐这个选择。本篇文章针对的三星手机的目录,其他厂商的手机可能略有不同,请注意。

2016-10-24 10:57:57 823

原创 Java基础--Android中泛型的应用(二)

背景 上一篇《 Java基础–Android中泛型的应用(一)》介绍了泛型在Android开发中的应用,致使减少了代码的冗余量,这里来介绍一下Google的Gson对泛型实体类的解析的问题。这也得益于怪盗kidou 关于《你真的会用Gson吗?》的文章。

2016-10-23 11:28:37 1220 1

原创 Android自定义View--垂直ViewPager加跑马灯

背景 不多说,直接看此图。 关键技术 ViewPager有个setPageTransformer方法可以设置页面切换时的动画:public void setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer)/** * 自定义Pager切换模式 */class DefaultTransform

2016-10-21 16:37:06 879

原创 Java基础--Android中泛型的应用(一)

背景 之前我们知道泛型在Java中意味着什么特性,但貌似在项目中很少应用到它,如果应用恰当,能够减少许多冗余的代码,也能让你的代码变得更加安全。

2016-10-20 15:33:33 2736

原创 使用Intent传递对象的好处

背景 在某些情况下,我们需要使用到Intent去传递一个自定义对象,这样能够减少许多不必要的代码。查阅一下,传递的对象类需要实现Serializable接口或Parcelable接口,下面我们来介绍一下如何选择,及如何传递。Serializable与Parcelable的选择 Serializable是JavaSE本身就支持的,Parcelable是Android特有功能,效率比实现Serial

2016-10-19 16:02:34 525

原创 Android 无线调试设备

背景 我们都知道使用USB线连接手机是非常麻烦的事情,经常要拔插拔插,对硬件接口也是有损伤的,以下介绍两种在同一局域网下调试设备的方法,其实原理都是一样的,只是第二种方法会比较方便。通过adb命令连接 手机要联到电脑同一局域网内,在命令行下: adb tcpip 5555 adb connect http://xxx.xxx.xxx.xxx (xxx是你手机的ip)通过工具连接 1.去h

2016-10-13 23:07:09 507

原创 Android Drawable--Shape

继上一篇《Android Drawable Resources》,这里来分析shape的使用,值得注意的是此shape可以作为之前各Drawable里item的元素,所以可以让Drawable Resources更加多变。

2016-10-12 18:32:40 424

原创 微信分享,图标背景黑色问题解决

背景 在做微信分享,分享带图标的链接时,并没有达到我们想要的效果,图标背景是黑色的,如下两张图。 而我们要的效果是这样的: 下来我们想办法给该图标背面加一层白色背景。 XML方法解决 这里用到了Drawable Resources 里的layer list知识。 res/drawable/layer_icon.xml<?xml version="1.0" encoding="ut

2016-10-12 17:03:28 18123 1

原创 Android Drawable--总览

背景 App很多页面都要显示一些图标,我们也经常使用@drawable直接引用图标,但是Android提供更多对drawable进行定义的方式,让显示更加多样化,下面将一一对这些技术进行介绍。总览 绘图资源(Drawable Resources)是一种让Graphic绘制到屏幕的资源,在Android中能通过getDrawable(int)获取该资源,又或者通过@drawable获取,这些资源包

2016-10-11 14:52:23 324

原创 Android UI/UE体验改善

本篇文章会介绍一些改善App体验的知识,有不对的请指正。

2016-10-09 14:56:08 498

原创 Java基础--接口

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。接口 接口中的方法默认是public abstract方法,所以累在实现接口方法是必须给出方法体,并且一定要用public来修饰,而且接口中的常量默认是public static常量。

2016-09-30 17:42:09 438

原创 Android开发中需要注意的坑

背景 此文纯粹总结开发Android以来遇到的一些坑,一来为了防止再次掉坑,二来是希望后面的朋友能躲开这些坑。另外还编写了《 Android开发中常犯的错误》。

2016-09-30 11:06:34 1178

原创 Android自定义View--加载动画

背景 一直觉得Android系统自带的加载动画过于简单,看久了容易产生视觉疲劳,所以有时候有必要定义一些有趣的动画;也因为平时我们开发时多集中在业务与性能上的处理,对动画这一块使用得比较少;下面就来介绍一个加载动画代码的编写。最终效果如下: 技术介绍 目前Android里有三种动画模式,分别是property animation,view animation,drawable animatio

2016-09-30 10:32:05 581

原创 Android自定义View--定义属性

很多时候,我们的App里面存在一些重复使用的布局,每次都需要使用大量xml代码去布局,特别是遇到要整体修改的时候,那就得一个一个去修改,即使使用了通用的style,也会有大量要修改的情况。所以我们可以使用自定义View来解决此问题。

2016-09-29 17:45:28 405

原创 代码管理--Git提交代码免输入密码

最近使用了BitBucket作为远程仓库管理代码,因每次push代码的时候都需要输入账号密码,它们提供了SSH协议使push代码不需要再输入账号密码。

2016-05-06 14:44:19 2668

C++编程思想

目 录 译者序 前言 第1章 对象的演化 1 1.1 基本概念 1 1.1.1 对象:特性+行为 1 1.1.2 继承:类型关系 1 1.1.3 多态性 2 1.1.4 操作概念:OOP程序像什么 3 1.2 为什么C++会成功 3 1.2.1 较好的C 3 1.2.2 采用渐进的学习方式 4 1.2.3 运行效率 4 1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺什么 10 1.3.6 方法应当提供什么 10 1.4 起草:最小的方法 12 1.4.1 前提 13 1.4.2 高概念 14 1.4.3 论述(treatment) 14 1.4.4 结构化 14 1.4.5 开发 16 1.4.6 重写 17 1.4.7 逻辑 17 1.5 其他方法 17 1.5.1 Booch 18 1.5.2 责任驱动的设计(RDD) 19 1.5.3 对象建模技术(OMT) 19 1.6 为向OOP转变而采取的策略 19 1.6.1 逐步进入OOP 19 1.6.2 管理障碍 20 1.7 小结 21 第2章 数据抽象 22 2.1 声明与定义 22 2.2 一个袖珍C库 23 2.3 放在一起:项目创建工具 29 2.4 什么是非正常 29 2.5 基本对象 30 2.6 什么是对象 34 2.7 抽象数据类型 35 2.8 对象细节 35 2.9 头文件形式 36 2.10 嵌套结构 37 2.11 小结 41 2.12 练习 41 第3章 隐藏实现 42 3.1 设置限制 42 3.2 C++的存取控制 42 3.3 友元 44 3.3.1 嵌套友元 45 3.3.2 它是纯的吗 48 3.4 对象布局 48 3.5 类 48 3.5.1 用存取控制来修改stash 50 3.5.2 用存取控制来修改stack 51 3.6 句柄类(handle classes) 51 3.6.1 可见的实现部分 51 3.6.2 减少重复编译 52 3.7 小结 54 3.8 练习 54 第4章 初始化与清除 55 4.1 用构造函数确保初始化 55 4.2 用析构函数确保清除 56 4.3 清除定义块 58 4.3.1 for循环 59 4.3.2 空间分配 60 4.4 含有构造函数和析构函数的stash 61 4.5 含有构造函数和析构函数的stack 63 4.6 集合初始化 65 4.7 缺省构造函数 67 4.8 小结 68 4.9 练习 68 第5章 函数重载与缺省参数 69 5.1 范围分解 69 5.1.1 用返回值重载 70 5.1.2 安全类型连接 70 5.2 重载的例子 71 5.3 缺省参数 74 5.4 小结 81 5.5 练习 82 第6章 输入输出流介绍 83 6.1 为什么要用输入输出流 83 6.2 解决输入输出流问题 86 6.2.1 预先了解操作符重载 86 6.2.2 插入符与提取符 87 6.2.3 通常用法 88 6.2.4 面向行的输入 90 6.3 文件输入输出流 91 6.4 输入输出流缓冲 93 6.5 在输入输出流中查找 94 6.6 strstreams 96 6.6.1 为用户分配的存储 96 6.6.2 自动存储分配 98 6.7 输出流格式化 100 6.7.1 内部格式化数据 101 6.7.2 例子 102 6.8 格式化操纵算子 106 6.9 建立操纵算子 108 6.10 输入输出流实例 111 6.10.1 代码生成 111 6.10.2 一个简单的数据记录 117 6.11 小结 123 6.12 练习 123 第7章 常量 124 7.1 值替代 124 7.1.1 头文件里的const 124 7.1.2 const的安全性 125 7.1.3 集合 126 7.1.4 与C语言的区别 126 7.2 指针 127 7.2.1 指向const的指针 127 7.2.2 const指针 127 7.2.3 赋值和类型检查 128 7.3 函数参数和返回值 128 7.3.1 传递const值 128 7.3.2 返回const值 129 7.3.3 传递和返回地址 131 7.4 类 133 7.4.1 类里的const和enum 133 7.4.2 编译期间类里的常量 134 7.4.3 const对象和成员函数 136 7.4.4 只读存储能力 139 7.5 可变的(volatile) 140 7.6 小结 141 7.7 练习 141 第8章 内联函数 142 8.1 预处理器的缺陷 142 8.2 内联函数 144 8.2.1 类内部的内联函数 145 8.2.2 存取函数 146 8.3 内联函数和编译器 150 8.3.1 局限性 150 8.3.2 赋值顺序 150 8.3.3 在构造函数和析构函数里隐藏行为 151 8.4 减少混乱 152 8.5 预处理器的特点 153 8.6 改进的错误检查 154 8.7 小结 155 8.8 练习 155 第9章 命名控制 157 9.1 来自C语言中的静态成员 157 9.1.1 函数内部的静态变量 157 9.1.2 控制连接 160 9.1.3 其他的存储类型指定符 161 9.2 名字空间 161 9.2.1 产生一个名字空间 162 9.2.2 使用名字空间 163 9.3 C++中的静态成员 166 9.3.1 定义静态数据成员的存储 166 9.3.2 嵌套类和局部类 168 9.3.3 静态成员函数 169 9.4 静态初始化的依赖因素 171 9.5 转换连接指定 174 9.6 小结 174 9.7 练习 174 第10章 引用和拷贝构造函数 176 10.1 C++中的指针 176 10.2 C++中的引用 176 10.2.1 函数中的引用 177 10.2.2 参数传递准则 178 10.3 拷贝构造函数 179 10.3.1 传值方式传递和返回 179 10.3.2 拷贝构造函数 182 10.3.3 缺省拷贝构造函数 187 10.3.4 拷贝构造函数方法的选择 188 10.4 指向成员的指针

2012-09-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除