- 博客(28)
- 收藏
- 关注
转载 刘海屏适配方案调研
1.问题场景部分机型存在隐藏刘海屏的全局功能; notch高度与隐藏刘海模式下黑边高度(statusBar)不同;weex以相同的statusBar距离设置造成刘海隐藏模式上边距很窄,视觉效果差。2.影响范围有隐藏刘海屏功能的机型;如小米刘海屏机型且系统在Android9.0以前;(重点调研)9.0之后去除了隐藏刘海屏的功能华为部分机型。3.调...
2019-08-04 21:53:00 197
转载 【Android跨进程】IPC总结
前言IPC是Inter-Process Communication的缩写,含义就是进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。两个进程可以是两个独立的app也可以是一个app的两个进程。跨进程常见的几种通信方式:Bundle通过Intent传递数据,文件共享,ContentProvider,基于Binder的AIDL和Messenger以及Socket。本文主要...
2019-05-26 23:51:00 118
转载 【排序算法】java实现
1.冒泡排序最简单的排序实现,冒泡排序,是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 //冒泡排序 private int[] bubbleSort(int[] arr) { for (int i = 0; i < arr.length; i++) for (in...
2019-05-01 23:22:00 123
转载 【http协议】浅谈
【http协议】浅谈一、 概述http,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。请求与响应: 客户端发送请求,服务器端响应数据无状态的: 无状态是指协议对于事务处理没有记忆功能。缺少状态意味着,假如后面的处理需要前面的信息,则前面的信息必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要前...
2019-04-29 22:41:00 111
转载 Android缓存机制——LruCache
概述LruCache的核心原理就是对LinkedHashMap的有效利用,它的内部存在一个LinkedHashMap成员变量,值得注意的4个方法:构造方法、get、put、trimToSizeLRU(Least Recently Used)缓存算法便应运而生,LRU是最近最少使用的算法,它的核心思想是当缓存满时,会优先淘汰那些最近最少使用的缓存对象。采用LRU算法的缓存有两种:L...
2019-04-27 23:03:00 119
转载 Android动画
在Android中,动画分类较多,最早的帧动画,补间动画,到Android3.0之后加入了属性动画。除此之外还有一些其他类型。一、传统动画1.帧动画帧动画就是我们说的Frame动画,Frame动画是一系列图片按照一定顺序展示的过程。Frame动画可以被定义在xml文件里,也可以完全编码实现。如果被定义在xml文件中,可以放在/res的anim或drawable目录下。如果...
2019-04-27 16:34:00 155
转载 mvc、mvp和mvvm
一、MVC设计图:可能由于MVP、MVVM的兴起,MVC在android中的应用变得越来越少了,但MVC是基础,理解好MVC才能更好的理解MVP,MVVM。因为后两种都是基于MVC发展而来的。1.MVC,全称Model-View-Controller,即模型-视图-控制器。具体如下:View:对应于布局文件Model:业务逻辑和实体模型Con...
2019-04-26 01:03:00 204
转载 【RecyclerView优化】
1.局部刷新(1)避免整个列表的数据更新,只更新受影响的布局。例如,加载更多时,不使用notifyDataSetChanged(),而是使用notifyItemRangeInserted(rangeStart, rangeEnd)补充:recyclerView.adapter的刷新:刷新全部可见的item,notifyDataSetChanged()刷新指定item,...
2019-04-26 00:53:00 181
转载 【java线程】的wait、sleep、join、yied
1.概述使用Thread相对来说比较简单,没有什么成本,但是通常来说,我们使用线程基本就是覆写run方法,然后调用线程对象的start函数启动线程。对于面试人员来说,这些都不是面试官会问到的问题,而线程的wait、sleep、join、yied这几个函数可问的就比较多了。函数名作用wait 当一个线程执行到wait()方法...
2019-04-25 02:27:00 262
转载 【view绘制流程】理解
一、概述View的绘制是从上往下一层层迭代下来的。DecorView-->ViewGroup(--->ViewGroup)-->View ,按照这个流程从上往下,依次measure(测量),layout(布局),draw(绘制)。我们来对上图做出简单解释:DecorView是一个应用窗口的根容器,它本质上是一个FrameLayo...
2019-04-25 00:59:00 122
转载 IntentService
参考:https://www.jianshu.com/p/3332f3357da0https://github.com/LRH1993/android_interview/blob/master/android/basis/IntentService.md一、概述前面讲Service时提及IntentService,这里具体展开进行剖析;IntentService的...
2019-04-24 23:32:00 479
转载 HandlerThread
参考:https://github.com/LRH1993/android_interview/blob/master/android/basis/HandlerThread.md一、概述HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,它不仅建立了一个线程,并且创立了消息队列,有自己的looper,可以让我们在自己的线...
2019-04-24 21:03:00 104
转载 handler原理
一、消息机制概述1.消息机制的简介(1)Handler是什么handler使Android给我们提供的用来更新UI的一套机制,也是一套消息处理机制;我们可以用它发送处理消息。(2)Android为什么设计只能通过handler机制来更新ui?最根本问题使解决多线程并发问题。假设一个activity由多个线程去更新UI,并且都没有加锁机制,那么会造成更新界面错乱。如果都...
2019-04-24 02:04:00 69
转载 死锁简析
所谓死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。一、死锁产生的条件一般来说,要出现死锁问题需要同时满足以下条件:互斥条件:一个资源每次只能被一个线程使用。请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:线程已获得的资源,在未使用完之前,不能强行剥夺。...
2019-04-24 00:10:00 179
转载 Android序列化
1.序列化的目的(1)永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中(2)通过序列化对象在网络中传递对象(3)通过序列化对象在进程间传递(4)在Intent之间,基本的数据类型直接进行相关传递即可,但是一旦数据类型比较复杂的时候,就需要进行序列化操作了2.实现序列化的方式(1)Implements Serializable 接口 (声明一下即可)...
2019-04-22 23:30:00 108
转载 AsyncTask原理
一、概述Android开发中我们通常让主线程负责前台用户界面的绘制以及响应用户的操作,让工作者线程在后台执行一些比较耗时的任务。Android中的工作者线程主要有AsyncTask、IntentService、HandlerThread,它们本质上都是对线程或线程池的封装。AsyncTask是一个抽象类,它是由Android封装的一个轻量级异步类(轻量体现在使用方便、代码简洁),...
2019-04-22 11:44:00 178
转载 【java线程池】
一、概述1.线程池的优点①降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;②提高系统响应速度,当有任务到达时,无需等待新线程的创建便能立即执行;③方便线程并发数的管控,线程若是无限制的创建,不仅会额外消耗大量系统资源,更是占用过多资源而阻塞系统或oom等状况,从而降低系统的稳定性。线程池能有效管控线程,统一分配、调优,提供资源使用率;④更强大的功...
2019-04-21 11:06:00 98
转载 java创建线程的三种方式
一、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。public class Thread1 extends Thread { //重写run...
2019-04-20 22:00:00 69
转载 service相关
本篇仍以问题为驱动一、什么时Service?Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件。Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中...
2019-04-20 17:47:00 134
转载 【hashMap】详谈
官方文档地说明几个关键的信息:基于Map接口实现、允许null键/值、非同步、不保证有序(比如插入的顺序)、也不保证序不随时间变化。一.概述HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。Hash...
2019-04-19 23:08:00 90
转载 【activity任务栈】浅析
背景知识Activity四种启动模式标准模式 standard栈顶复用模式 singleTop栈内复用模式 singleTask单例模式 singleInstance任务栈Activity的FlagsActivity的Flags很多,这里介绍集中常用的,用于设定Activity的启动模式。可以在启动Activity时,通过Intent的addF...
2019-04-19 15:50:00 124
转载 arrayList和LinkedList区别
简述:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于双链表的数据结构。2.对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。一句话总结:ArrayList 是动态数组结构,有...
2019-04-18 23:36:00 114
转载 RecyclerView和ListView比较
题记:RecyclerView说是目前最重要的控件也不为过,ListView虽然被RecyclerView光芒掩盖,但也仍有着自己的d地位;这个问题不是很偏重原理或实践,而更多的是,针对面试中会问到的一些知识点来分析。答时谨惕大而空、应当小而细;少说比错说好,说的深入比泛泛而谈好的多,最好能结合项目中用到的例子。概述:ViewHolder在ListView中,View...
2019-04-18 19:54:00 127
转载 【二叉树遍历】必知方式
概述:本文主要讲述二叉树的前序、中序、后序遍历的递归与非递归实现及广度优先遍历、深度优先遍历和之字形遍历。正确的输出结果是:(1)先序遍历 以根左右的顺序进行遍历 递归方式//<editor-fold desc="先序遍历-递归"> private void preOrderTraversal(TreeNode ro...
2019-04-18 01:27:00 77
转载 进程与线程的区别
进程的概念:进程是程序的一次执行。进程是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。线程的概念:引入进程的目的,是为了更好地使多道程序并发执行,以提高资源利用率和系统吞吐量,增加并发程度;而引入线程,则是为了减少程序在并发执行时所付出的时空开销,提高系统地并发性...
2019-04-18 01:25:00 59
转载 【单例模式】java实现
概述:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。关键点:构造函数不对外开放,一般为private。通过一个静态方法或者枚举返回单例类对象。确保单例类的对象有且只有一个,尤其在多线程情况下。确保单例类对象在反序列化时不会重新构建对象(1)饿汉模式饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)p...
2019-04-18 00:17:00 85
转载 【斐波那契数列】java探究
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解析(1)递归方式对于公式f(n) = f(n-1) + f(n-2),明显就是一个递归调用,因此根据f(0) = 0和f(1) = 1我们不难写出如下代码:1 public int Fibonacci(int n) {2 ...
2019-04-17 00:57:00 96
转载 replugin插件化,插件转场动画失效的问题解决
说明 随着应用功能的丰富,Android程序的安装包也逐渐变大,这成为应用程序现有框架下难以摆脱的瓶颈。所以引入了rePlugin插件化框架,将应用按功能拆分为插件,以此减小apk的大小并同时增加应用的灵活性。rePlugin相关信息见此处 https://github.com/Qihoo360问题描述 插件化开发过程中发现,插件程序中之前的转场动画出现异常,写在...
2018-08-02 16:17:00 239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人