[置顶] Android开发——断点续传原理以及实现

0.  前言在Android开发中,断点续传听起来挺容易,在下载一个文件时点击暂停任务暂停,点击开始会继续下载文件。但是真正实现起来知识点还是蛮多的,因此今天有时间实现了一下,并进行记录。本文原创,转载请注明出处为SEU_Calvin的博客。 1.  断点续传原理在本地下载过程中要使用数据库实时存储到底存储到文件的哪个位置了,这样点击开始继续传递时,才能通过HTTP的GET请求中的setReque...
阅读(9874) 评论(104)

[置顶] Android APP架构设计——MVC、MVP和MVVM介绍

0. 前言为了更好地进行移动端架构设计,我们最常用的就是MVC、MVP和MVVM,作为三个最耳熟能详的三大架构,应用可谓非常广泛。本文原创,转载请注明出处为SEU_Calvin的博客。本篇博客将介绍这三种架构设计的工作原理以及优缺点,以及它们在Android中的表现。 1.   MVC1.1    MVC工作原理MVC是软件架构中最常见的一种框架,三个字母分别代表三个模块:Model、View和C...
阅读(7835) 评论(0)

[置顶] Android开发——View绘制过程源码解析(二)

0. 前言  View的绘制流程从ViewRoot的performTraversals开始,经过measure,layout,draw三个流程,之后就可以在屏幕上看到View了。上一篇已经介绍了View和ViewGroup的measure的源码解析过程,本篇介绍measure后如何获得View的宽和高,以及layout和draw的过程。1.   获得Measure出的宽高Meaure完成以后,可以...
阅读(12693) 评论(4)

[置顶] Android开发——View绘制过程源码解析(一)

0. 前言  View的绘制流程从ViewRoot的performTraversals开始,经过measure,layout,draw三个流程,之后就可以在屏幕上看到View了。其中measure用于测量View的宽和高,layout用于确定View在父容器中放置的位置,draw则用于将View绘制到屏幕上。本文原创,转载请注明出处:SEU_Calvin的CSDN博客。1. MeasureSpec...
阅读(13844) 评论(7)

[置顶] Android开发——Android中常见的4种线程池(保证你能看懂并理解)

0.前言使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用,减少创建和销毁线程的性能开销。其次,能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞。最后,线程池能够对线程进行管理,比如使用scheduleThreadPool.scheduleAtFixedRate(myRunnable, 1000 ,2000, TimeUnit.MILLISECONDS);我们可以设置延...
阅读(20150) 评论(14)

[置顶] Android开发——常见的内存泄漏以及解决方案(二)

0.前言 上一篇Android开发——常见的内存泄漏以及解决方案(一) 中已经对部分可能会引发内存泄漏的情况进行了阐述,此篇将从图片、动画等资源角度介绍可能会造成内存泄漏的情况以及应对方法。6. 集合类导致内存泄漏很常见的一个例子就是图片的三级缓存结构,为了更好的用户体验,缓存机制必不可少,三级缓存分别为网络缓存,本地缓存以及内存缓存。...
阅读(11088) 评论(2)

[置顶] Android开发——常见的内存泄漏以及解决方案(一)

0. 前言  Android的内存泄漏是Android开发领域永恒的话题,那今天就总结一下常见的内存泄漏吧。也给自己提个醒,在以后的编码过程中多注意这个问题。在Android Studio里可以通过一些分析工具比如MAT来找出潜在的内存泄漏。还有如果不清楚Java里的内存泄漏以及内存泄漏、内存益处的区别的小伙伴,可以参考我之前写过的Java技术——Java中的内存泄漏。此篇将从静态变量引用Acti...
阅读(12190) 评论(1)

[置顶] Android开发——减小APK大小

0.前言APK的大小对APP的加载速度,使用内存大小和消耗功率多少有一定影响。如何减小APK的大小对于Android开发者是一个永恒的话题。那么首先就来了解一下APK的组成结构。 1.APK的组成结构META-INF:包含CERT.SF和CERT.RSA签名文件,和MANIFEST.MF清单文件。assets:包含APP的assets资源,代码中可以通过AssetManager对象访问。res:包...
阅读(13314) 评论(3)

[置顶] Android开发——AsyncTask的使用以及源码解析

1.AsyncTask使用介绍 AsyncTask封装了Thread和Handler,通过AsyncTask可以很方便地在执行完后台任务后更新UI。如果不太清楚Android的Handler机制,可以查看此篇Android消息机制详解。   下面是一个使用AsyncTask的实例,利用网络下载某URL里的字符串,以模拟耗时任务。在下载过程中,会通过进度条对话框向用户展示进度。在完成任务后将字...
阅读(14194) 评论(6)

[置顶] Android开发——Android 6.0权限管理机制详解

0.前言 最近在研究所实习,我负责维护Android手机取证项目的Android客户端,有客户反映我们的APP在Android6.0无响应,经过调试发现SD卡读写权限权限被拒绝。但明明是在AndroidManifest.xml文件中声明过的。查了很多资料才知道Android6.0的很多权限申请机制发生了改变,可以说是Android6.0在安全机制上更进了一步吧,因此写下这篇文章以记录。...
阅读(15124) 评论(11)

[置顶] Android开发——Android的消息机制详解

1. 我们为什么需要Android的消息机制   我们知道,Android规定访问UI只能在主线程中进行。若在子线程中访问UI,就会抛出异常。这个验证由ViewRootImpl的checkThread方法来完成。 为什么不允许在非主线程访问UI呢,这是因为Android的UI控件不是线程安全的。并发访问会导致控件处于不可预期的状态。 那为什么不对UI访问加上锁机制呢,原因如下: (1)这...
阅读(11712) 评论(0)

[置顶] Android开发——程序锁的实现(可用于开发钓鱼登录界面)

1. 程序锁原理 实时检测栈顶Activity的包名,如果和我们预置的包名相符(可用SQLite数据库对要进行匹配的包名进行信息存储),则新开一个Activity栈,将拦截画面置于用户面前。只有在用户输入密码,并且验证成功后,才“放行”。代码实现比较简单,获取到topActivity的包名即可进行程序锁的逻辑判断。...
阅读(10829) 评论(4)

[置顶] Android开发——免Root监听微信的聊天记录(后台秘密发邮件)

发送后台邮件需要用到三个第三方的库,分别为activation.jar,additionnal.jar,mail.jar。发送邮件的时候需要用到很多信息,包括发送邮件的服务器的IP和端口、邮件发送者的地址、邮件接收者的地址、登陆邮件发送服务器的用户名和密码、邮件主题、邮件的文本内容等等。 这里需要注意的是,我们发送后台邮件需要给出账号密码等敏感信息,这些邮件信息,除了邮件的文本内容信息,其他的信息我们都可以在程序里面编写好……...
阅读(16942) 评论(18)

Android开发——Android系统启动以及App启动过程

0. 前言  从Android手机打开开关,到我们可以使用其中的app时,这个启动过程到底是怎么样的? 1.  系统上电当给Android系统上电,在电源接通的瞬间,CPU内的寄存器和各引脚均会被置为初始状态,CPU复位之后,程序指针会指向启动地址,从该地址读取并直接运行启动程序的可执行代码,或者将可执行代码与数据载入CPU内置的RAM中再运行。这一段代码,放在PC中,叫做BIOS,而在Andro...
阅读(83) 评论(0)

设计模式——适配器模式详解

适配器模式把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不兼容而无法一起工作的两个类能一起工作。适配器模式的使用场景: (1)系统需要使用现有的类,而此类的接口不符合需要。 (2)需要一个统一的输出接口,而输入类型不可预知(如Android中的Adapter)。 (3)创建一个可以复用的类(如Android中的Adapter),使得该类可以与其他不相关的类或不可预见的类...
阅读(34) 评论(0)

Android开发——Protocol Buffer的使用(比XML、Json快很多)

0.前言最近的项目里有用到Protocol Buffer,Protocol Buffer是Google公司开发的一种数据描述语言,类似于XML,是一种结构化数据的数据存储格式,可用于数据传输量较大的即时网络通信IM等场景。之所以使用它,说明它是有不可替代的优势,这里借用CarSon的一张图来说明:Protocol Buffer主要的优势在于三点:(1)体积小速度快。像XML这种报文是基于文本格式的...
阅读(75) 评论(0)

Android开发——View的生命周期总结

0.前言今天看到一个概念是View的生命周期,有点懵逼,听说过Activity的生命周期,Fragment的生命周期,对View的生命周期好像没什么概念啊。难道layout、draw这些也算是生命周期的方法吗?因此查阅、整理了一些资料,有了此文。 1.View生命周期相关方法View的生命周期从构造方法开始依次执行以下几个方法,该View的可见性为默认值时:(0)Constructors()Vie...
阅读(146) 评论(0)

Android开发——监控造成UI卡顿的原因

0.  前言Android只有主线程才能更新UI。如果界面1秒钟刷新少于60次,即FPS小于60,用户就会产生卡顿感觉。Android使用消息机制进行UI更新的,如果在主线程handler的dispatchMessage方法进行了耗时操作,就会发生UI卡顿。本文原创,转载请注明出处: 1.  dispatchMessage方法在哪dispatchMessage()是在Looper.loop()里调...
阅读(824) 评论(2)

Android开发——关于RxJava的知识总结

0. 前言RxJava在主页上的介绍://a library for composing asynchronous and event-based programs using observable sequences for the Java VM. //一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。大家都知道异步代码经常会既难写也难被读懂。这时候RxJava的优势就来了,随着程序逻辑变得越来越复杂,它依然能够保持简洁。初学RxJava只要把握两点,观察者模式和异步。...
阅读(195) 评论(0)

Android开发——收集应用Crash信息到服务器

0.  前言无论是多么完美的应用,总会有Crash的时候,那么收集应用的Crash信息到服务器对开发人员修补BUG来说尤为重要。 本文原创,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/533119311.  实现原理我们可以自定义我们的CrashHandler类实现接口Thread.UncaughtExceptionHandler...
阅读(102) 评论(0)

Android开发——Material Design系列之TextInputLayout

0. 前言  TextInputLayout 继承于 LinearLayout,专门用来包裹 EditText或EditText的子类,当用户进行输入动作的时候我们设置的android:hint 属性值会作为提示以动画的形式运动到输入框左上角,错误信息也显示在输入框的下方。有些输入验证是在后台做得,产生错误后再反馈给前台,这样非常耗时而且用户体验差。TextInputLayout则完美的解决了这个...
阅读(182) 评论(0)

设计模式——责任链模式详解

责任链模式定义: 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到某个对象处理了这个请求。 责任链模式的使用场景: 多个对象可处理同一个请求,但是到底谁处理要动态决定。但是还是要向多个对象中的一个提交请求。...
阅读(137) 评论(0)

Android开发——带你彻底理解 Window 和 WindowManager

0. 前言  有时候我们需要在桌面上显示一个类似悬浮窗的东西需要用Window来实现,Window是一个抽象类,表示一个窗口,它的具体实现类是PhoneWindow,实现位于WindowManagerService中,它的职责就是管理系统中的所有窗口。窗口在 Android 中就是绘制的画布Surface,当一块Surface显示在屏幕上时,就是用户所看到的窗口了。WindowManagerSer...
阅读(209) 评论(0)

数据结构——搜索树树、B-树、B+树

二叉搜索树满足以下几个特性 (1)所有非叶子结点至多拥有两个儿子(Left和Right) (2)所有结点存储一个关键字 (3)非叶子节点的左/右子树上的任意节点值都小/大于该节点上的值 二叉搜索树的搜索从根节点开始,如果查询的关键字与结点的值相等则命中;否则比较要查询的关键字和该节点结点值的大小,根据大小进入左/右节点继续搜索;如果左节点或者右节点为空,则找不到相应的关键字。...
阅读(144) 评论(0)

Java技术——CopyOnWriteArrayList源码解析

0. 前言  CopyOnWriteArrayList是一个线程安全,读操作时无锁,但是写操作有锁的ArrayList。是读写分离思想的体现。实现原理是当某个线程要修改List中的元素时,会把列表中的元素Copy一份,然后在新数组中对元素进行修改,最后把新元素赋值给原来的List的。这样就可以实现读操作不需要加锁。JDK1.5开始Java并发包提供了CopyOnWriteArrayList和Cop...
阅读(267) 评论(0)

Android开发——本地验证码的简易实现

0.  前言  验证码无处不在,有人问我,你知道达芬奇密码下面是什么吗,对,答案就是达芬奇验证码。验证码一个最主要的作用就是防止恶意暴力破解登录,防止不间断的登录尝试,有人说其实可以在服务器端对该终端进行登录间隔检测,如果间隔太短可以展示拒绝的姿态。但是还是本地验证码作用更加实在,可以减轻服务器端的压力。这篇将使用自定义View来实现一个如下效果的简易本地验证码。算是对自定义View知识的复习吧。...
阅读(1203) 评论(11)

Java技术——Java中的参数传值方式

0. 前言  昨天10号晚上迎来了今日头条视频面试三连击(Android开发实习生),每场都50都分钟,而且问的问题有些确实有点难(头条的工程师水平确实有点高,面BAT的时候都没这么大压力),不过今日头条是我见过招聘效率最高的公司,第一场面试结束后面试官会让你不要离开视频间,等待HR通知,一般HR在10分钟你就会打电话告知你一面过了,马上开始第二场面试。就这样进行了三轮视频面试,结果差强人意,三面...
阅读(435) 评论(2)

Android开发——ListView局部刷新的实现

0. 前言  局部刷新,即只需要在数据发生变化时才去刷新ListView中对应的Item,数据未发生变化时不会去刷新ListView中对应的Item。对于getView()非常耗时的情况下将体现出极大的性能优化。局部刷新的功能早已经被集成在了RecycleView中,而且RecycleView还引入了增加和删除的动态效果等等,在性能上和定制上都有很大的改善。本篇着重介绍ListView中局部刷新的...
阅读(244) 评论(0)

Java技术——同步锁的各种知识总结

1. 线程同步的方法  1.1 同步方法  就是使用synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。 1.2 同步代码块  即由synchronized关键字修饰的代码块。被该关键...
阅读(232) 评论(0)

Android开发——适配终结者AutoLayout

0. 前言  相信Android开发者对于适配问题都比较苦恼,如果有一个库可以完成如下功能,那一定是非常爽的,即直接对比着设计师给我们的设计图(针对某个分辨率),直接把px属性写在xml布局文件里,然后在所有分辨率的机器上比例均完美适配。AutoLayout就是这样的一个库。本库的地址:https://github.com/hongyangAndroid/AndroidAutoLayout。1...
阅读(333) 评论(0)

设计模式——设计模式三大分类以及六大原则

1. 设计模式三大分类  设计模式分为三种类型,共23类。(1)创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。(2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。(3)行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。 2.  六大原则2.1 单一职...
阅读(180) 评论(0)

Android开发——进程间通信之AIDL(二)

0.  前言不论是Android还是其他操作系统,都会有自己的IPC机制,所谓IPC(Inter-Process Communication)即进程间通信。首先线程和进程是很不同的概念,线程是CPU调用的最小单元,进程一般在PC和移动设备上指一个程序或者一个应用,一个进程可以包含多个线程。IPC方式有很多,在Android中常用的IPC方式包括Bundle、文件、Messenger、AIDL、Co...
阅读(1081) 评论(0)

Android开发——进程间通信之AIDL(一)

0.  前言不论是Android还是其他操作系统,都会有自己的IPC机制,所谓IPC(Inter-Process Communication)即进程间通信。首先线程和进程是很不同的概念,线程是CPU调用的最小单元,进程一般在PC和移动设备上指一个程序或者一个应用,一个进程可以包含多个线程。IPC方式有很多,在Android中常用的IPC方式包括Bundle、文件、Messenger、AIDL、Co...
阅读(453) 评论(0)
154条 共8页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1131330次
    • 积分:10906
    • 等级:
    • 排名:第1366名
    • 原创:127篇
    • 转载:25篇
    • 译文:2篇
    • 评论:288条
    个人说明