- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 Android面试题解析第一天 (• LRUCache 原理)
面试是一场与面试官交心的过程,会遇到一些成熟稳重的大牛、同样也会遇到一些设计挖苦你自以为是的人,这些都不重要,我们能够做到的只有好好掌握知识,一点点的积累。LRU( Least Recently Used ) 算法,经常会在面试中问到,虽然名字听起来高大上,但是算法其实很简单,最近最少使用的就将其排除在列表之外,以便将最近最常使用的节点放在列表最前面,在取数据的时候方便快捷的拿到数据,提高性...
2018-09-03 15:31:16
409
原创 浅谈 设计模式之 —— 责任链模式 (OKHttp中的责任链模式)
一、 什么是责任链模式 责任链, 顾名思义是将多个节点通过链条的方式连接起来,每一个节点相当于一个对象,而每一个对象层层相关,直接或者间接引用下一个对象(节点);直到链条中有一个节点处理头节点传下来的事件截止。二、责任链模式使用场景 (以下摘自 Android源码设计模式) 有一事件,可以被多个对象同时处理,但是由哪个对象处理则在运行时动态决定! 在请求处理者不明确...
2018-08-09 16:46:22
1590
原创 Android性能优化——APP启动速度优化
一、查看启动时间 第一种方式:直接在Logcat中查看,Android应用启动的时候会打印出app的启动时间,不过要在过滤框中输入 Displayed 来过滤查看: 第二种方式: 使用 adb 命令,这里不详解 adb,有疑问的可以自行谷歌二、优化启动时间 怎么优化?我们都知道APP的启动是靠系统进程来调用ActivityThread中...
2018-07-25 11:18:43
1079
原创 Activity生命周期问题汇总
Activity的生命周期在面试中是高频问题,今天抽空总结一下: 1. 下拉状态栏 启动Activity:05-02 10:26:57.936 3339-3339/wallet.ellison.com.blogdemo E/StatusBarActivity: onCreate ============= 05-02 10:26:57.936 3339-3339/...
2018-05-02 18:44:55
2057
原创 Hook技术 —— 加载完整的APK
通过该demo,我们能了解到如下内容: 1、 融合不同的 apk dex 文件, 2、 了解到Element对象以及DexFile 对象 3、 插件中APK资源的合并 本文切入点 1、 融合Element数组 2、 获取资源文件一、 融合 Element 数组 首先了解一下什么是ClassLoader,以及java 中 Class...
2018-04-27 17:58:12
1358
原创 Hook技术——拦截系统Intent
首先说下什么是 Hook (钩子函数):钩子函数其实一段程序,在系统的调用中挂载到系统,在没有调用该函数之前,钩子程序先捕获该消息,这样钩子函数先得到控制权,这样钩子函数就可以加工处理该函数的执行从而改变消息的传递。 Hook技术实现的过程:(java层)1) 找到Hook点① hook的过程是一个找方法的过程,我们要找到微信怎么登录的,就需要找到微信登录的方法。② ...
2018-04-20 16:59:16
4306
2
原创 四大组件之 ———— Activity 工作流程
首先来看下这张图 从源码分析从startActivity 开始,到最后执行的是 startActivityForResult 方法,我们看下这个方法中具体操作:public void startActivityForResult(Intent intent, int requestCode, @Nullable Bundle options) { if (mP...
2018-04-20 10:53:56
1759
原创 动态换肤框架原理解析
阅读该文(动态换肤框架原理)你会了解:1、 网易云换肤的由来2、 换肤框架的编写 一 、 首先了解一下换肤的主要APP目前市场上主要换肤的APP有网易云音乐作为代表: 换肤前 换肤后 另外还有高德地图同样也有换肤,但是换肤比较特殊,只有默认的几套皮肤供选择,这里不再赘述。 二 、 网易云音乐换肤过程1. 下...
2018-04-16 15:44:32
978
原创 Ubuntu 连接错误 Connection closed by foreign host
1、出现突然连接不上并报Connection closed by foreign host2、网上查了一下是ssh服务问题,也有可能是远程服务器端出现问题 所以可以重启一下远程服务器3、重启ssh服务: cd /etc/ssh sudo chmod 644 ./* sudo chmod 600 ssh_host_dsa_k
2017-11-14 09:54:54
3987
原创 设计模式 -- 原型模式
原型模式使用场景: 1. 类初始化消耗非常多资源 2. new一个对象需要非常繁琐的数据准备或访问权限 3. 一个对象需要给其他对象访问,每个调用者都需要修改其值时 简单实现/** * Created by Ellison * @date 2017/11/9 * @desc 用一句话描述这个类的作用 */class WordDocument : Cloneable {
2017-11-09 22:50:21
177
原创 MySQL安装与配置 (绿色版不能安装的情况)
MySQL安装与配置是一件很简单的事情,但是在下载安装的时候会出现一些问题,比如我电脑的权限配置一直存在问题,所以在使用mysqld.exe这个文件的时候会启动不了服务。 下面我将下载开始安装与配置MySQL:
2017-10-31 16:08:31
327
原创 Android Appcompat样式使用自定义Dialog
自定义Dialog在项目中使用到很多,其中遇到的坑也很多,来看下使用Appcompat样式的dialog怎么处理:1、使用样式文件<style name="PhotoDialog" parent="@style/Theme.AppCompat.Light.Dialog.Alert"> <!--是否去除标题 --> <item name="windowNoTitle">
2017-03-29 09:42:24
5873
1
原创 Android Studio 中的Logcat使用MD效果
首先来张图看着还好,有点眼花,当然你也可以设置自己喜欢的颜色,具体步骤如下:打开AS中的setting,在搜索设置下面搜索Android logcat: 可以看到,这是修改之后的,再来一张没有修改的: 注意右边的 Use inherited attributes, 没有修改的是打上勾的,如果你想要设置自己想要的颜色,首先得保存一份自己的 “主题” Darcula Copy 或者 Defau
2017-03-18 11:01:08
296
原创 这一年呐。。。
就像12年进入大学这个小社会一样,今年也是如期的离开了学校这个大怀抱。当初进入大学想着多学一份技能就能够有一份骄傲的资本,回顾大学四年来的学习情况,收获最多的也就是自己坚持在图书馆的自学历程;我也庆幸能够有一份自己的坚持,所以才能够如愿的加入到自己想要的行业中,并始终为之奋斗!回顾16年工作的点滴,有辛酸、有喜悦更有收获的激情。以不懈努力为我人生的心中信念,所以说好运从来都是给有准备的人;当我迷茫不
2016-12-31 22:54:28
267
原创 基于极光推送3.0.0的使用
上面需要使用placeholder在打包的使用取代JPUSH_PKGNAME 在清单文件中使用tools:replace 在使用jcenter自动集成的时候,就不需要添加 .so文件到jniLibs文件夹了,不然会报重复文件的错误最近又集成了极光推送,在使用的使用,需要注意出现6009的错误 官方文档解释说是未知权限错误未知权限查看当前清单文件中使用到的权限,根据官方文档,需要复制demo中
2016-12-07 16:11:14
348
转载 android中xml tools属性详解
转载出处: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0309/2567.html
2016-11-30 09:15:31
228
原创 java.lang.OutOfMemoryError: Java heap space
AS编译报错:OutOfMemoryError出现该问题一般都是AS中设置虚拟机内存有问题需要在gradle.properties中修改虚拟机的大小: 在最后面加上即可 org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Xmx5120m
2016-11-24 20:21:49
288
原创 安卓studio开发项目_错误集合
如图:出现default not found一般是在项目中setting.gradle中include的项目没有找到的原因 include 后面的模块一般会存在当前项目中,如果要弱引用,需要添加蓝色部分的代码, 来确定项目所在的盘符,这样就不用每次导入模块都会在当前项目文件夹中拷贝一份,解耦很重要。 再说 default not found是指include中的项目在当前文件夹中没有找到,然后
2016-11-23 09:42:38
291
原创 Fragment中使用startActivityForResult
在使用startActivityForResult时,如果没有接收到数据可能出现的问题: 1、Activity使用了单例模式(最重要,首先需要查看) 2、是否使用的是getActivity.startActivityForResult(),在Fragment页面中使用了getActivity表示 调用了宿主Activity的方法,最终导致result结果在Activity中,但是也
2016-10-27 15:20:59
339
原创 安卓Studio修改包名
1、将包名的默认显示方式去掉,将compact empty middle packages 的勾去掉 2、按shift+F6重命名包名3、在该app下修改build.gradle中的applicationId为自己的修改后的包名 4、在清单文件中修改activity中的包名:
2016-08-04 10:29:41
411
原创 安卓studio添加依赖的六种模式
Compile compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。Provided Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。APK 只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时
2016-08-02 09:38:22
361
原创 too old (format 29) to work with client version '1.8.9 (r1591380)' (expects format 31).
如题: 使用了Eclipse中的SVN插件更新项目版本出现的问题,因为在Studio中同样使用了SVN更新版本的情况, 在studio中使用的时候出现了format1.7 需要更改到format1.8(不知道是不是这个原因)如果出现这种情况,只需要在Eclipse项目中右键–> team –> Upgrade 即可解决更新问题SVN有很多常见的问题,比如在更新过程中,半天不见更新成功可以尝试下面
2016-07-26 08:48:14
960
原创 Eclipse 项目中包含有框架,框架中包含有其他Library 的结构导入到Android Studio中怎么实现?
Eclipse 项目中包含有框架,框架中包含有其他Library 的结构导入到Android Studio中怎么实现?如题:之前写项目都是用的Eclipse,之后用了一段时间的AS,进入了现在的公司又开始了Eclipse的艰辛历程。。。所谓是道路坎坷不平啊。今天弄了一天的转换,百度了一天(无赖没有VPN),将今天的工作写下吧,如果有小伙伴和我有同样的工作,可以看下,或许对你有帮助。。。———————
2016-07-25 20:37:50
563
转载 linux-find命令用法
find一些常用参数的一些常用实例和一些具体用法和注意事项。1.使用name选项:文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。 可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。 不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.log的文件,使用~作为 'pathname'参数,波浪号~代表了你的$HOME目
2016-01-27 12:34:24
340
转载 ViewPager的基本使用
ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view。我们首先来看看API对于这个类的表述:?123Layout manager that allows the user to flip left and right through pages of data. You supp
2016-01-26 20:03:21
272
转载 如何让Android自适应不同分辨率或不同屏幕大小的layout布局
一:不同的layout Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用
2016-01-25 21:26:11
2341
转载 Android的文本和输入---拼写检查器
Android平台提供能够让你在应用程序中执行和访问拼写检查的拼写检查器框架。这个框架是由Android平台提供的文本服务API之一。 要在应用程序中使用该框架,你就要创建一个特殊的Android服务类型,该服务会生成一个拼写检查器的session对象。基于你提供的文本,该session对象会返回由拼写检查器生成的拼写建议。 拼写检查器的生命周期 下
2016-01-25 20:38:05
834
转载 AsyncTask中各个函数详细的调用过程,初步实现异步任务
原文地址AsyncTask内部类可能会产生内存泄露的问题解决上述内部类可能引起的内存泄露问题的方法•将AsyncTask或者Thread的子类作为单独的类文件,不持有Activity的强引用•将AsyncTask或者Thread的子类使用static修饰,则不会隐式持有Activity的强引用•如果是匿名内部类,则需要将其对象设置成成员属性,使用static修饰就不会隐式持有
2016-01-25 18:28:06
501
转载 创建notification的方法
说明:根据项目选择的基础sdk,选择不同的创建Notification的方法1 在android sdk 3.0 之前直接通过 new Notification的方法直接创建通知对象2 在android sdk 3.0 是通过Notification.Builer的方法间接配置Notification的属性和创建Notification的功能3 在android sdk4.
2015-03-20 12:04:21
629
转载 Android杂谈-RelativeLayout中的baseline是什么?
中文翻译是基准线的意思,看似简单又有些不好理解,其实这个baseline相当于笔记本里写文字时候的底下的那条线,在RelativeLayout中baseline举例:比如,加入两个相邻的TextView,给第二个TextView一个大一点的padding(比如20dp),如果加了layout_alignBaseline到第二个TextView中的话,TextView中的文字"world"会
2014-12-28 10:36:51
406
转载 Android使用AttributeSet自定义控件的方法
所谓自定义控件(或称组件)也就是编写自己的控件类型,而非Android中提供的标准的控件,如TextView,CheckBox等等.不过自定义的控件一般也都是从标准控件继承来的,或者是多种控件组合,或者是对标准控件的属性进行改变而得到的自己满意的控件. 自定义控件可能会有很多种方法,这里只介绍我要介绍的方法. 在这种方法中,大概的步骤是这样的 1.我们的自定义控
2014-12-27 12:23:58
387
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人