自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嘻哈包袱铺 专栏

github开源项目 https://github.com/GeekGhost/Ghost

  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

转载 Android中AIDL的工作原理

转载自:http://www.jianshu.com/p/e0c583ea9289IPC在这之前我们先简单说一下IPC,IPC是Inter-Process Communication的缩写,是进程间通信或者跨进程通信的意思,既然说到进程,大家要区分一下进程和线程,进程一般指的是一个执行单元,它拥有独立的地址空间,也就是一个应用或者一个程序。线程是CPU调度的最小单元,是进程

2017-09-21 13:52:47 986

原创 JAVA 反射 调用系统隐藏方法

private ActivityManager am; public Object callMethod(ActivityManager activityManager, Method method, Object... args) { try { return method.invoke(activityManager, args);

2017-09-19 15:47:14 1176

原创 Android 源码详解 Volley超时重试机

Volley超时重试机制基础用法Volley为开发者提供了可配置的超时重试机制,我们在使用时只需要为我们的Request设置自定义的RetryPolicy即可. 参考设置代码如下:int DEFAULT_TIMEOUT_MS = 10000;int DEFAULT_MAX_RETRIES = 3;StringRequest stringRequest = new S

2017-09-19 15:27:59 716 1

原创 Android开发之线程池使用总结

线程池算是Android开发中非常常用的一个东西了,只要涉及到线程的地方,大多数情况下都会涉及到线程池。Android开发中线程池的使用和Java中线程池的使用基本一致。那么今天我想来总结一下Android开发中线程池的使用。OK,假如说我想做一个新闻应用,ListView上有一个item,每个item上都有一张图片需要从网络上加载,如果不使用线程池,你可能通过下面的方式来开启

2017-09-18 15:54:03 426

原创 Android 面试题 关于oom的解决方案

#Android关于OOM的解决方案 ##OOM内存溢出(Out Of Memory)也就是说内存占有量超过了VM所分配的最大##出现OOM的原因加载对象过大相应资源过多,来不及释放##如何解决在内存引用上做些处理,常用的有软引用、强化引用、弱引用在内存中加载图片时直接在内存中作处理,如边界压缩动态回收内存优化Dalvik虚拟机的堆内存分配自定义堆内存大小

2017-09-15 15:47:29 1035

原创 Android 面试题 ANR问题总结

1、ANR排错一般有三种类型KeyDispatchTimeout(5 seconds) --主要是类型按键或触摸事件在特定时间内无响应BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成ServiceTimeout(20 secends) --小概率事件 Service在特定的时间内无法处理完成2、哪些操作会导致A

2017-09-15 15:45:22 467

原创 Android 源码解析 图解 Android 事件分发机制

在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Android 事件分发流关于Android 事件分发机制网上的

2017-09-15 15:39:41 279

原创 View的工作原理 理解MeasureSpec

View的工作原理  理解MeasureSpec一、1.MesureSpec 测量规格的意思,决定了View的测量过程。2.在测量过程还受父容器的影响3.在测试过程中,系统会将View的LayoutParams根据父容器所施加的规则转换成对应的MesureSpec,然后再根据这个measureSpec来测量出View的宽/高。4.这里的宽/高是测量宽/高,不一定等于View

2017-09-15 15:36:57 370

原创 Android 面试题 插件化技术学习

###Android动态加载dex技术初探http://blog.csdn.net/u013478336/article/details/50734108Android使用Dalvik虚拟机加载可执行程序,所以不能直接加载基于class的jar,而是需要将class转化为dex字节码。Android支持动态加载的两种方式是:DexClassLoader和PathClassL

2017-09-15 15:30:09 979

原创 Android 源码总结 AsyncTask

AsyncTask首先从Android3.0开始,系统要求网络访问必须在子线程中进行,否则网络访问将会失败并抛出NetworkOnMainThreadException这个异常,这样做是为了避免主线程由于耗时操作所阻塞从而出现ANR现象。AsyncTask封装了线程池和Handler。AsyncTask有两个线程池:SerialExecutor和THREAD_POOL_EXECUTOR。前

2017-09-15 15:21:17 226

原创 Android 性能优化:使用 Lint 优化代码、去除多余资源

读完本文你将了解到:前言什么是 LintLint 工作方式简单介绍从命令行运行 LintAndroid Studio 中使用 Lint团队中建立代码规范利器提升降低问题的等级Lint 虽好也不能贪杯在 Java 代码中忽略 Lint 警告在 XML代码中忽略 Lint 警告Gradle 中配置 Lint自动删除查找出来的无用资源文件总结Thanks

2017-09-14 18:44:21 378

原创 深入研究java.lang.ThreadLocal类

一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制

2017-09-14 16:26:22 208

原创 Messenger与AIDL的异同

. Messenger本质也是AIDL,只是进行了封装,开发的时候不用再写.aidl文件。结合我自身的使用,因为不用去写.aidl文件,相比起来,Messenger使用起来十分简单。但前面也说了,Messenger本质上也是AIDL,故在底层进程间通信这一块,两者的效率应该是一样的。2. 在service端,Messenger处理client端的请求是单线程的,而AIDL是多线程的。使

2017-09-14 16:07:14 249

转载 Android 面试总结 Handler、Looper、Message、MessageQueue基础流程分析

老司机们都知道,Android的线程间通信就靠Handler、Looper、Message、MessageQueue这四个麻瓜兄弟了,那么,他们是怎么运作的呢?下面做一个基于主要源代码的大学生水平的分析。Looper(先分析这个是因为能够引出四者的关系)在Looper中,维持一个Thread对象以及MessageQueue,通过Looper的构造函数我们可以知道: p

2017-09-14 11:52:42 897

转载 Android 面试总结 Handler内存泄漏分析及解决

#Handler内存泄漏分析及解决###一、介绍首先,请浏览下面这段handler代码:public class SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler() { @Override public void handleMessage

2017-09-14 11:39:48 381

原创 Android面试总结 内存泄漏总结

内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。我会从 java 内存泄漏的基础知识开始,并通过具体例子来说明 Android 引起内存泄漏的各种原因,以及如何利用工具来分析应用内存泄漏,最后再做总结。##Java 内存分配策

2017-09-14 11:36:22 1836

转载 Android通知栏介绍与适配总结

由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知栏玩法,谷歌也不得不对其进行更新迭代调整,增加新功能的同时,也在不断地改变样式,试图迎合更多人的口味。本文总结了Android通知栏的版本迭代过程,在通知栏开发过程中所遇到的各种各样的坑,以及一些解决技巧,特别的,对于大众期盼的Android 7.0的到来,通知栏又会发生怎样的改变呢?接下

2017-09-14 10:40:51 8638 1

原创 彻底明白Activity启动模式-SingleTop、SingleTask、SingleInstance具体使用场景

启动模式启动模式是什么有这样的场景:当我们使用App的时候,呈现出一个Activity,按下返回键(不考虑重写返回键事件),常常就回退到上一个打开的Activity或者退出App。//重写返回按键事件public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEve

2017-09-14 10:35:09 3527

原创 Andorid 面试题 一 Android基础知识

Activity生命周期。启动Activity: onCreate()—>onStart()—>onResume(),Activity进入运行状态。Activity退居后台: 当前Activity转到新的Activity界面或按Home键回到主屏: onPause()—>onStop(),进入停滞状态。Activity返回前台: onRestart()—>onStart

2017-09-13 15:37:50 362

原创 Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能

最近项目中需要用到ListView下拉刷新的功能,一开始想图省事,在网上直接找一个现成的,可是尝试了网上多个版本的下拉刷新之后发现效果都不怎么理想。有些是因为功能不完整或有Bug,有些是因为使用起来太复杂,十全十美的还真没找到。因此我也是放弃了在网上找现成代码的想法,自己花功夫编写了一种非常简单的下拉刷新实现方案,现在拿出来和大家分享一下。相信在阅读完本篇文章之后,大家都可以在自己的项目中一分钟引

2017-09-13 15:31:36 2057 1

原创 Android长连接,怎么处理心跳机制

所谓的心跳包就是客户端定时放送简单的信息给服务器端,告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务器端,服务器端回复一个固定信息。如果服务器端几分钟后没有收到客户端信息则视客户端断开。比如有些通信软件长时间不适用,要想知道它的状态是在线还是离线,就需要心跳包,定时发包收包。       心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活在。事实

2017-09-13 14:59:25 1013

原创 Android开发优化之——使用软引用和弱引用

Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。这里重点介绍一下软引用和弱引用。如果一个对象只具有软引用,那么如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的

2017-09-13 14:52:56 223

转载 Java 并发专题 : Timer的缺陷 用ScheduledExecutorService替代

继续并发,上篇博客对于ScheduledThreadPoolExecutor没有进行介绍,说过会和Timer一直单独写一篇Blog.1、Timer管理延时任务的缺陷a、以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗;然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,

2017-09-13 11:30:31 297

原创 Java / Android 基于Http的多线程下载的实现

先说下原理,原理明白了,其实很简单:a、对于网络上的一个资源,首先发送一个请求,从返回的Content-Length中回去需要下载文件的大小,然后根据文件大小创建一个文件。[java] view plain copythis.fileSize = conn.getContentLength();// 根据响应获取文件大小  Fil

2017-09-13 11:28:33 445

转载 Java 并发专题 : CyclicBarrier 打造一个安全的门禁系统

继续并发专题~这次介绍CyclicBarrier:看一眼API的注释:[java] view plain copy/**   * A synchronization aid that allows a set of threads to all wait for   * each other to reach a common

2017-09-13 11:25:03 242

转载 Java 并发专题 :FutureTask 实现预加载数据 在线看电子书、浏览器浏览网页等

继续并发专题~FutureTask 有点类似Runnable,都可以通过Thread来启动,不过FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞。由于:FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞这两个特性,我们可以用来预先加载一些可能用到资源,然后要用的时候,调用get方法获取(如果资源加载完,直

2017-09-13 11:21:46 378

转载 Java 并发专题 :闭锁 CountDownLatch 之一家人一起吃个饭

最近一直整并发这块东西,顺便写点Java并发的例子,给大家做个分享,也强化下自己记忆。每天起早贪黑的上班,父母每天也要上班,话说今天定了个饭店,一家人一起吃个饭,通知大家下班去饭店集合。假设:3个人在不同的地方上班,必须等到3个人到场才能吃饭,用程序如何实现呢?作为一名资深屌丝程序猿,开始写代码实现:[java] view plain copy

2017-09-13 11:13:15 284

原创 Android 自定义通知Notification 适配不同背景颜色

自定义通知自定义通知首先明确一点是要用RemoteViews来设置布局PendingIntent remotePending=PendingIntent.getActivity(MainActivity.this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);Remo

2017-09-13 10:19:56 1049

转载 谈谈单元测试之(二):测试工具 JUnit 3

转载自:http://blog.csdn.net/happylee6688/article/details/38059833这篇文章的主题,主要是介绍一下 JUnit 3,虽然 JUnit 3 已经不推荐使用了,但它也曾是风靡一时。这里旨在讨论一下 JUnit 3 的使用,以及它的内部构造,就当是为下一篇文章介绍 JUnit 4 做铺垫吧。之前已经把单元测试的重要性都讲出来了,这里

2017-09-12 17:27:25 268

原创 谈谈单元测试:为什么要进行烦人的单元测试?

前言最近,在网上看到过一个调查,调查的内容是“程序员在项目开发中编写单元测试的情况”。当然,至于调查的结果,我想聪明的你已经可以猜到了。高达 58.3% 的比例,一般情况下不写单元测试,只有偶尔的情况才会写写。16.6% 的程序员从来都不写单元测试。只有很少的一部分程序员才会在自己的代码中进行单元测试,并保证方法测试通过。看到这些,你想到了什么?现状

2017-09-12 17:25:28 300

原创 Android测试教程 Mock之mockito,异步测试

1. mockito是干什么的?Mock框架之一,其余的还有EasyMock,PowerMock等。Mock说白了就是打桩(Stub)或则模拟,当你调用一个不好在测试中创建的对象时, Mock框架为你模拟一个和真实对象类似的替身来完成相应的行为就是利用他,我们可以创建一个傀儡,然后被mock的类要返回的数据我们都可以指定! 就像下面这样 :User user

2017-09-12 16:03:38 1154

原创 Android单元测试-Mockito的使用

申明依赖testCompile"junit:junit:$rootProject.ext.junitVersion"testCompile"org.mockito:mockitoall:$rootProject.ext.mockitoVersion"测试代码写在test 文件夹下如果是这样:androidTestCompile"junit:junit:$rootProject.ex

2017-09-12 15:47:24 490

原创 使用Mockito进行单元测试【2】—— stub 和 高级特性

一篇中介绍了Mockito的基本信息,现在接着介绍Mockito强大的stub功能 2. Mockito使用实例5. 对连续的调用进行不同的返回 (iterator-style stubbing)还记得在实例2中说道当我们连续两次为同一个方法使用stub的时候,他只会使用最新的一次。但是在某一个方法中我们确实有很多的调用怎么办呢?mockito当然想到这一点了:

2017-09-12 15:43:50 1064

原创 使用Mockito进行单元测试【1】——mock and verify

1. 为什么使用Mockito来进行单元测试? 回答这个问题需要回答两个方面,第一个是为什么使用mock?mock其实是一种工具的简称,他最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者接口有依赖,它能够帮你模拟这些依赖,并帮你验证所调用的依赖的行为。 比如一段代码有这样的依赖:  当我们需要测试A类的时候,如果没有

2017-09-12 15:40:09 3879

原创 Android随笔:单元测试的好处

许多开发者都有个习惯,常常不乐意去写个简单的单元测试程序来验证自己的代码。对自己的程序一直非常有自信,或存在侥幸心理每次运行通过后就直接扔给测试组测试了。然而每次测试组的BUG提交过来后就会发现自己的程序还存在许多没有想到的漏洞。但是每次修改好BUG以后还是怀着侥幸心理,认为这次不会有bug了。然后又一次自信地提交,结果又败了。因为这样反复几次后。开发者花在找BUG和修复BUG的这些时间加起来已经

2017-09-12 12:34:55 397

原创 解读Android官方MVP项目单元测试

Google在3月份推出了一个项目,用来介绍Android MVP架构的各种组合,可以认为是官方在这方面的最佳实践。令人称道的是除了MVP本身之外,这些工程配备了极其完善的单元测试用例,学习价值极高。本文着重针对todo-mvp的单元测试进行解读。官方MVP项目的Github地址是:https://github.com/googlesamples/android-architecture写

2017-09-12 12:30:20 692

原创 MVC与MVP架构特点与区别-android

> MVC/MVP  View强依赖于Model是MVC的主要问题。由此导致很多控件都是根据业务定制,从Android的角度来看,原本可以由一个通用的layout就能实现的控件,由于要绑定实体模型,现在必须要自定义控件,这导致出现大量不必要的重复代码。因此有必要将View和Model进行解耦,而MVP的主要思想就是解耦View和Model。由此引入MVP就显得很自然。  MVP存在的问题:

2017-09-12 11:55:30 329

转载 Android官方MVP架构解读

转载自:http://blog.csdn.net/ljd2038/article/details/51477475综述  对于MVP (Model View Presenter)架构是从著名的MVC(Model View Controller)架构演变而来的。而对于Android应用的开发中本身可视为一种MVC架构。通常在开发中将XML文件视为MVC中的View角色,而将A

2017-09-12 11:46:12 352

原创 Android源码解析AsyncTask的工作原理

AsyncTask的源码链接https://github.com/android/platform_frameworks_base/blob/master/core/java/android/os/AsyncTask.javaAsyncTask一开始定义了一些字段,如下所示:private static final String LOG_TAG = "AsyncTask";

2017-09-11 18:43:01 212

转载 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)

转载请注明出处:http://blog.csdn.net/ns_code/article/details/17161237    Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:    1、可以避免由于Java的单

2017-09-11 14:36:42 266

Fragment保持状态的框架

刚开始使用fragment的时候,看到网上有很多例子都是说只要replace来切换界面,但是这个会有一个缺点,比如A界面是个列表,好不容易通过流量下载来了,然后切换界面,再次返回,由于使用replace,fragment就又重新创建界面导致,用户又得加载。现在这个Demo,就完美的解决了这个问题。这个是使用了add方法,可以保持fragment的状态。很有用的UI框架

2014-01-24

空空如也

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

TA关注的人

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