自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (16)
  • 收藏
  • 关注

原创 Android面试整理

一、说明 最近在考虑换个工作,故整理一些面试中经常会问到的点,也是Android中比较重要的知识点,主要针对中高级面试。二、知识点总结 我觉得一个好的App应用首先要设计合理,能够让用户流畅方便的使用,应用的设计属于产品的工作,但是如果产品提出的需求不合理,我们一定要提出质疑。其次,一个好的应用应该具备体验流畅、界面灵动、崩溃率尽可能少、Apk尽可能小等特点,...

2019-03-29 16:38:26 1580

原创 面向对象的六大原则

一、面向对象的六大原则       现在的编程的主流语言基本上都是面向对象的。我们知道,面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开闭式原则、迪米特原则、里氏替换原则、依赖倒置原则以及接口隔离原则,其中,单一职责原则是指一个类应该是一组相关性很高的函数和数据的封装,这是为了提高程序的内聚性,而其他五个原则是通过抽象来实现的...

2019-02-13 18:36:34 18219

原创 Android 中的线程

一、Android线程的基本介绍       线程在Android中是一个很重要的概念,从用途上来说,Android中的线程可以分为主线程和子线程,主线程主要用来处理和界面相关的事,比如界面绘制和响应用户的操作,为了确保用户体验,主线程必须确保其响应速度,所有任何时候我们都不应该在主线程中处理非常耗时的任务,否则会造成界面卡顿甚至ANR;而子线程的作用就是完成耗时的操作,确保主线程的响应速度。...

2018-07-28 18:30:42 13846 1

原创 Android线程通信之Handler

一、Handler简介 我们知道,Android为了确保UI操作的线程安全,规定所有的UI操作都必须在主线程(UI线程)中执行,比如更新界面元素的显示,响应用户的点击事件等,但是有时候我们必须执行一些耗时的操作,比如网络请求或者读写文件等,当耗时操作完成后我们需要更新UI提示用户,在这种情况下,我们是不能将耗时操作直接在UI线程中执行的,因为这样会阻塞UI线程,导致UI线程无法及时...

2018-07-27 10:48:33 3290 1

原创 Android内存泄露

一、概述       Android内存泄露是所有开发者都会遇到的问题,内存泄露的本质原因是因为本该被回收的对象因为被其他对象持有其引用,从而造成无法被回收继续占用内存;Android为每一个应用程序分配了一定的内存空间,当由于内存泄露造成应用程序占用内存越来越大直到没有多余的内存分配时,就会造成OOM,即内存溢出,当程序发生内存溢出时,会直接崩溃,后果是很严重的。下面我们来分析一下造成内存泄...

2018-04-26 15:34:01 205

原创 AysncTask必须在UI线程中创建吗?

一、说明我们知道AysncTask是Android提供的给我们进行异步操作的类,我们可以利用这个类在子线程中执行耗时操作,并将结果更新到UI线程,网上很多说法是AysncTask必须在UI线程中创建并执行器execute方法,其实我觉得这个说法不太对。二、源码分析AsyncTask具体源码可以参考:https://mp.csdn.net/postedit/81234625这里仅仅说...

2019-03-27 11:39:48 386

原创 Retrofit原理分析

一、Retrofit简介Retrofit是现下Android端开发非常流行的一款网络请求框架,它通过动态代理的方式将Java接口翻译成网络请求,通过OkHttp发送请求,并且其具备强大的可扩展性,支持各种数据格式的转换以及RxJava。说到这里,我们来分析一下网络请求框架的本质,网络请求框架是一套提供给开发者使用的用于网络请求的API接口,我们知道,Android网络请求一般是基于Http协议...

2019-02-21 14:42:16 10123 4

原创 Android插件化技术

一、Android插件化技术 我们在平时的开发过程中,会经常遇到产品需求的变更或者出现bug,在传统的模式中,我们需要首先需要修改代码,然后重新打包Apk,再交给公司的运营去官网或者应用商店上线,用户在打开应用的时候就会进行更新了。但是这种模式有几个缺点,一是上线周期长,从修改代码到用户更新需要较长的时间;二是用户更新代价较大,每次用户更新都需要下载整个Apk包,整个Apk包包括了...

2019-02-20 15:55:12 7572 13

原创 MVP+Retrofit+RxJava搭建网络请求平台

一、说明       在Android开发中,网络请求是必不可少的一部分,在我的理解中,App相当于一个壳,它的主要功能是与服务端进行数据交换,用户在操作App时,无非就是通过App查看服务端数据或者将数据提交给服务端,当然,一个好的App也必须拥有良好的设计风格,确保良好的用户体验,要想做到良好的用户体验,首先,产品的设计一定要合理,我们在平时的开发过程中,也要关注产品的设计,对于不合理的设...

2019-02-20 15:14:44 327

原创 利用xposed自动获得微信个人收款二维码链接和收款记录

一、说明        现在的App一般都会带有支付功能,而现在比较流行的支付一般有支付宝、微信、银行卡等,一般情况下,应用开发者会直接对接支付宝、微信或者第三方支付公司的Api,以完成支付,但是都需要收取不小的费率,于是,有的第三方支付平台就想到了钻空子的方法,利用一些特殊的手段获得收款二维码以及收款记录,这样就可以绕过支付平台完成支付过程了,本篇文章的目的就是分析如何完成这样一个流程,本文...

2019-02-14 09:50:20 15875 8

原创 利用xposed自动获得支付宝个人收款二维码链接和收款记录

一、说明 现在的App一般都会带有支付功能,而现在比较流行的支付一般有支付宝、微信、银行卡等,一般情况下,应用开发者会直接对接支付宝、微信或者第三方支付公司的Api,以完成支付,但是都需要收取不小的费率,于是,有的第三方支付平台就想到了钻空子的方法,利用一些特殊的手段获得收款二维码以及收款记录,这样就可以绕过支付平台完成支付过程了,本篇文章的目的就是分析如何完成这样一个流程,本文的...

2019-02-14 09:46:49 31455 13

原创 linphone-android二次开发

一、说明       Linphone是一款开源基于SIP协议的语音视频电话软件,可移植到移动端Android、IOS、WindowsPhone8。这篇我们主要来分析一下linphone-android的二次开发,也就是说,我们需要修改linphone的代码,并且需要提供出可供Android调用的接口。废话不多说,直接开干。二、下载源码并编译github地址:https://githu...

2019-01-02 17:58:21 11549 4

原创 Android WebView隐藏H5的部分内容

一、说明       产品有个需求,要在App中打开天猫购物的链接,并且要隐藏掉H5页面的某些内容,让用户只能浏览商品,而不能购买,这个就需要在Java代码中操作WebView,让H5页面加载完成后能够隐藏掉某些内容。二、分析      首先我们来看一下天猫购物的链接地址:https://market.m.taobao.com/apps/market/need/yxIndex.html...

2018-12-14 17:13:34 5970 1

原创 反编译魅族工具箱App实现翻硬币

一、说明       在这篇自定义View之指南针(反编译别人的代码实现)文章中,我们通过反编译魅族工具箱的应用,实现了其指南针的效果,魅族工具箱里面有好几个比较实用工具,比如测量尺、水平仪、随机事件等。这篇文章分析一下其随机事件的实现。二、界面初步分析首先看一下魅族翻硬币的截图效果:点击硬币后,会有一段翻转硬币的动画,动画结束后会显示硬币的翻转结果。由于不知道csdn怎么上传...

2018-09-30 15:19:35 1160

原创 自定义View之指南针(反编译别人的代码实现)

一、说明       偶尔点开魅族手机内置的工具箱应用,发现其指南针做的还不错,就想模拟做一个类似的效果,在这里我们不准备自己从头开始编写代码,而是采用一点黑科技,首先,我们从魅族系统中导出工具箱应用的apk,然后反编译apk,结合hierarchy view分析其代码实现,所以本篇文章会设计到反编译和自定义view两方面的知识。二、界面初步分析首先看一下魅族工具箱指南针的效果截图:...

2018-09-29 16:42:19 844

原创 Android网络请求之Volley

一、概述        在上一篇文章中,我们分析了Android中常用的网络请求框架HttpURLConnection:HttpURLConnction源码分析,通过分析,我们知道,HttpURLConnection发起请求是同步的,而Android系统规定,不能在主线程中发起网络请求,以免阻塞主线程导致界面卡顿甚至ANR。所以我们在使用HttpURLConnection发起网络请求时,首先要...

2018-09-04 17:07:58 260

原创 String转int问题分析

一、概述       相信很多同学在面试时都遇到过这样一个问题,要求封装一个函数,将String类型转换为int类型。这个看似简单的问题其实隐藏着很多细节,要想真正封装好这个函数并不容易。面试官要考察的其实并不是算法本身的难度,这个问题的算法其实没有什么难度可言,主要要考察的是程序员写代码的仔细程度,考虑问题是否全面,也就是说,我们要尽可能的让代码具有鲁棒性。下面我们一步步的分析这个问题中隐藏...

2018-09-04 09:40:14 10685

原创 HttpURLConnction源码分析

一、概述       在上一篇文章Android网络编程之HTTP协议中,我们分析了HTTP协议的协议规则,以及其传输方式;我们知道HTTP协议是属于应用层的协议,其主要规定了传输数据的格式,以便通信双方都能按照规定的格式来解读数据,而真正的数据传输是基于传输层的TCP协议。在平时的Android开发中,HTTP网络请求使用到的框架一般都离不开HttpClient和HttpURLConnect...

2018-08-30 14:39:59 816

原创 常见排序算法总结

一、概述          我们在平时的开发中,排序算法可以说是最常用的算法之一,不同的排序算法,有着不一样的性能消耗,虽说前端开发对算法的要求没有那么高,但是对于一些常见的算法,我们还是要掌握的,它属于一个开发者的基本功,今天,我们就来总结一下常见的排序算法,请看下面这张表:下面排序都以由小到大排序为目的 二、冒泡排序1、基本思想:两个数比较大小,较大的往下沉,较小的冒上来...

2018-08-24 18:18:47 244

原创 Android网络编程之Http协议

一、Http协议简介       在上一篇文章Android网络编程简介中我们说过,大部分的Android应用网络通信都是基于Http协议(超文本传输协议)的,Http协议属于应用层的协议,而应用层协议的作用是用来规定传输数据的格式,以便通信双方能够按照规则来解读数据。Http是基于TCP/IP通信协议来传递数据的,其通信依赖于传输层的TCP协议。Http协议由请求和响应组成,属于标准的客户端...

2018-08-18 11:24:30 6365 2

原创 Android网络编程简介

一、Android网络编程简介       我们在平时的开发中,不可避免的会使用到网络编程方面的知识;在我的理解中,App好比是一个壳,它的作用是将用户和服务器联系起来,用户通过操作App向服务器发送或者接收数据,并且以友好的方式反馈给用户,而App要和服务器交互数据,就会设计到网络编程。在Android App的开发中,用到最多的通信方式是基于Http协议,如果涉及到消息推送,可能会使用到W...

2018-08-08 10:33:14 1615

原创 Android设计模式之Builder模式

一、概述        设计模式是我们在平时编程的过程中对一些常见的问题场景总结出来的最优编程套路,按照设计模式的思想,我们在编程的过程中遇到类似的问题时可以快速的套用对应的设计模式,从而高效的解决问题。在平时的开发过程中,我们也经常接触到各种设计模式,甚至我们自己写的代码也会不自觉的使用到设计模式,只是可能叫不出名字而已。下来介绍一种Android中常用的设计模式,Builder模式。二、Bui...

2018-04-20 11:07:16 229

原创 java 枚举占用内存的原因

一、概述        枚举一般是用来列举一系列相同类型的常量,它是一种特殊的数据类型,使用枚举能够确保参数的安全性。但是Android开发文档上指出,使用枚举会比使用静态变量多消耗两倍的内存,应该尽量避免在Android中使用枚举,那么枚举为什么会更消耗内存呢?下面一起分析一下。二、分析定义一个枚举如下:package com.liunian.androidbasic.e

2018-04-19 16:37:57 5576 1

原创 单例模式的几种形式

一、概述        在Android中我们用到最多的设计模式应该就是单例模式了,单例模式也是最简单的一种设计模式,如果对象在应用中是全局唯一的,那我们就可以使用单例模式,在Android系统中,也大量用到了单例模式。那么,单例模式有哪些写法呢?每种写法的优缺点又是哪些呢?二、单例模式的写法1、饿汉式饿汉式是最简单的单例模式定义方法,首先我们需要将类的构造方法定义为pri

2018-04-19 09:55:11 4830

原创 处理Android应用在后台被杀死

一、背景        我们在使用android app的过程中,可能突然会遇到其他的事情需要将app退到后台,比如微信来了一条消息需要回复,当我们回复完消息在切换回我们的app时,如果处理不好,应用可能会白屏或者闪退。造成这种现象的原因,是android的进程回收机制,android会给每一个应用分配一定的内存,当应用退入后台时,系统并不会将应用杀死,而是将应用缓存起来。打开的应用越多,后台

2018-04-17 15:30:50 34149 3

原创 Android加载高清大图

一、概述        在android开发的过程中,有时候会遇到这样的需求,需要显示很大的图片,并且还不允许压缩。比如显示:世界地图、微博长图等,那么如何完成这个需求呢?首先我们分析一下,图片非常大,考虑到内存的情况,我们不能一次将整个图片加载到内存中,因为这样会OOM,然后图片的宽或者高超出了手机屏幕的尺寸,要想显示整张没有压缩过的图片,我们只能每次加载图片的局部,然后监听控件的滑动事件,...

2018-04-13 10:53:52 2142

原创 Android jenkins打包遇到的坑

一、jenkins打包介绍       jenkins主要是可以实现自动打包,配置之后用户只需要点击构建按钮即可完成打包,省去了程序员打包的工作,具体可以参考:https://www.jianshu.com/p/38b2e17ced73,这篇文章只记录我在配置jenkins打包过程中遇到的坑。二、遇到的坑1、拉去代码权限问题配置如下:其中Key里面的内容是.ssh的private key,在C:\...

2018-03-09 12:13:41 4034

原创 Android马甲包

一、马甲包介绍        在App的开发过程中,经常会遇到产品或者运营的同事提出要制作马甲包的需求;马甲包是指与原APP包除了包名,包id,包名称图标等给用户加以区分的东西,其他功能基本不变的APP包。在开发马甲包之前,一定要和产品或者运营的同事讨论清楚马甲包的具体需求,比如需要制作多少个马甲包,马甲包和主包有哪些差别,之后开发的功能是否需要在马甲包上体现等等,只有了解清楚了需求,才能达到事半...

2018-03-06 18:58:13 27571 6

原创 xposed微信红包

一、xposed的工作原理        关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,还有一个框架是CydiaSubstrate,但是这个框架是收费的,而且个人觉得不怎么好用,而Xposed框架是免费的而且还是开源的,网上也有很多文章介绍了Xposed框架的原理实现,不了解的同学可以自行查阅即可,可以参考:http://blog.csdn.net/u...

2018-02-28 12:20:03 14950 10

原创 Android系统字体加载流程

一、背景视觉同学提了一个需求,要求手机中显示的字体可以支持medium字体,经过分析,android原生的字体库中并没有中文的medium字体,如果使用bold,显示又太粗,为满足需求,需要分析android的系统字体加载流程。二、分析android系统字体的加载流程可以参考:http://blog.csdn.net/rjdeng/article/details/48545313大

2017-03-07 15:52:22 8335

原创 android自定义控件(星级评分)

一、背景视觉过来提了一个需求,要求完成一个星级评分控件,该控件中的星星的颜色需要实现渐变的效果,并且没有渐变的规律,也就是说各个星星的颜色需要不一样,效果如下:二、问题分析星星控件对应的控件是android.support.v7.widget.AppCompatRatingBar,利用这个控件可以实现星级评分效果,但是每个星星的颜色是一样的,效果如下:

2017-02-28 14:43:09 25256

魅族工具箱apk

魅族工具箱apk。-

2018-09-30

数独解析器

用java写的一个小程序,数独解析器,也就是一个用来解答数独的小程序,对于热爱数独的朋友有所帮助。一次做数独题居然做了一个小时,有一点郁闷,于是就写了这么一个小程序。

2013-05-29

The C++ Programming Language

关于这本书的名气我不想再说了,可以说最经典的介绍C++语法的书籍之一。希望对大家有帮助。

2013-05-05

我爱推箱子

用Java写的一个推箱子小游戏,功能比较全面,并具有背景音乐等。涉及到Swing的制作,图片的处理,声音处理,IO编程,线程控制等Java技术。代 码清晰易懂,并有详细的注释,是学习Java界面编程的良好资料。

2013-05-04

并查集问题

有对并查集问题的详细分析,有问题分析和代码解说等部分。

2013-01-03

动态规划详解

拥有对动态规划几种基本问题的分析,如背包问题等,学习之后可对对动态规划有一个基本了解。

2013-01-03

筛选素数问题

用筛选法筛选出1-n之间的素数,效率很高,时间复杂度比平常的算法大大降低,代码拥有详细注释。

2013-01-03

01背包问题

对01背包问题进行了描述,分析,以及解决办法和全部的代码,代码拥有详细的注释。

2013-01-03

数塔问题分析

有对数塔问题的描述,分析以及解决办法和全部的代码,且代码都有详细的注释。

2013-01-03

最长子序列详解

解决最长子序列的问题,包括问题描述,分析,解决和全部代码,拥有详细注释。

2013-01-03

管理系统MFC

用MFC开发的一个管理系统,内容丰富,带有所以代码,流程图,核心代码,开发思想等文档,按钮设置了颜色,每一个对话框有背景图片,还有一些控件的应用,在窗口中绘图等技术都有涉及,是学习MFC的良好资料。

2013-01-03

hdoj1107武林

用C++面向对象的方法解决该题,绝对AC,将每一个事物都看成一个对象,如格子,各派弟子,整个武林系统,过程很清晰,有详细的注释,保证看得懂。

2012-10-15

大数的处理

大数处理包括大数的加法、减法、乘法、除法、阶乘等,包含详细代码(包含模板),解说等。

2012-10-03

一个面向对象入门的基本程序——工资管理系统

这是一个简单的程序,用C++中面向对象的基本技术完成了一个工资管理系统,有详细的注释,可以让初学者更好的掌握C++中面向对象的思想。

2012-10-03

面向对象程序设计方法概论

介绍了一些面向对象程序设计的基本方法,对新手入门学习可以起到一个引导的作用。

2012-10-03

空空如也

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

TA关注的人

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