自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

渐忘的歌

android开发

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

原创 Android性能优化相关

UI卡顿帧率60fps准则:尽量保证每次在16ms内处理完所有的CPU与GPU计算、绘制、渲染等操作,否则会造成丢帧卡顿问题常见原因:人为在UI线程中做轻微耗时操作,导致UI线程卡顿; 布局Layout过于复杂,无法在16ms内完成渲染; 同一时间动画执行的次数过多,导致CPU或GPU负载过重; View过度绘制,导致某些像素在同一帧时间内被绘制多次,从而使CPU或GPU负载过重; View频繁的触发measure、layout,导致measure、layout累计耗时过多及整个Vi

2022-04-21 14:59:19 1815

原创 Java和Kotlin编译

Kotlin基于Java虚拟机(JVM),通过Kotlin编译器生成的JVM字节码与Java编译的字节码基本相同,也因此与Java可以完全兼容,并且语法更加简洁两者的编译过程大致:1词法分析2语法分析3语义分析4中间代码生成5目标代码生成区别在于Kotlin与Java相比重要的细节在编译后端(目标代码生成)环节。Kotlin编译器在目标代码生成环节做了很多类似于Java封装的事情,比如自动生成Getter/Setter代码的生成、Companion转变成静态类、修改类属性

2022-04-21 14:54:27 2362

原创 JetPack-Databinding

原理:编译阶段在编译时,DataBinding编译器会处理layout为根节点的xml文件,然后生成正常的xml布局文件,但是多了tag信息,这个是DataBinding自动加上的,在运行阶段会用到,会通过该tag找到该View对应的绑定的值。编译时DataBinding还会生成几个类,最关键的就是XXXBindingImpl类,这个类的类名默认是根据xml命名按照一定规律生成的,当然也可以在data标签下指定为其它名字,这个XXXBindingImpl类就是实现data和UI绑定的关键,在运行

2022-04-21 14:51:06 2352

原创 数据库索引

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之...

2018-05-25 20:48:39 225

原创 Http的报文结构

(1)HTTP 请求报文HTTP 请求报文由请求行、请求头部、空行 和 请求包体 4 个部分组成,如下图所示:   下面对请求报文格式进行简单的分析:  请求行:请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。常用的 HTTP 请求方法有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;● GET:当客户...

2018-05-24 23:11:40 263

原创 泛型常用特点

(1)Java泛型开发人员在使用泛型的时候,很容易根据自己的直觉而犯一些错误。比如一个方法如果接收List<Object>作为形式参数,那么如果尝试将一个List<String>的对象作为实际参数传进去,却发现无法通过编译。虽然从直觉上来说,Object是String的父类,这种类型转换应该是合理的。但是实际上这会产生隐含的类型转换问题,因此编译器直接就禁止这样的行为。(2...

2018-05-18 10:10:56 2060

原创 try catch finally,try里有return,finally还执行么?

执行,并且finally的执行早于try里面的return结论:1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在fi...

2018-05-18 10:09:27 268

原创 TCP与UDP的区别

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。UDP(User Datagram Protocol)UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外...

2018-05-16 11:27:30 132

原创 OSI与TCP/IP各层的结构与功能,都有哪些协议

(1)OSI模型OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。OSI 七层模型是一种框架性的设计方法 ,建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能使就是帮助不同类型的主机实现数据...

2018-05-16 10:54:50 6136 1

原创 GC收集器有哪些?CMS收集器与G1收集器的特点。

(1)Serial收集器Serial收集器是最基本的收集器,这是一个单线程收集器,它“单线程”的意义不仅仅是说明它只用一个线程去完成垃圾收集工作,更重要的是在它进行垃圾收集工作时,必须暂停其他工作线程,直到它收集完成。Sun将这件事称之为”Stop the world“。没有一个收集器能完全不停顿,只是停顿的时间长短。虽然Serial收集器的缺点很明显,但是它仍然是JVM在Client模式下的默认...

2018-05-14 18:07:24 3724

原创 Java1.7与1.8新特性

(1)1.8一、接口的默认方法与静态方法。也就是接口中可以有实现方法;并且接口也可以有静态方法,工具类也可以使用接口来实现; 二、Lambda 表达式。简化了代码,实际上是函数式接口的简化函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口。比如Java标准库中的java.lang.Runnable和 java.uti...

2018-05-14 16:37:32 1825 1

原创 AsycTask、HandlerThread、IntentService的使用场景与特点

1、AsyncTask介绍:AsyncTask是一种轻量级的异步任务类,可以在后台线程池中执行后台的任务,然后把执行的进度和最终的结果传递给主线程并在主线程中更新UI。从实现上来说,AsyncTask封装了Thread和Handler。但它并不适合特别耗时的任务,对于特别耗时的任务应该使用线程池。它是一个泛型抽象类,Params表示参数的类型,Progress表示后台任务进度的类型,而Result...

2018-05-13 10:52:36 753

转载 理解RemoteViews

RemoteViews是一种远程View,可以在其他进程中显示,为了能够更新它的界面,RemoteViews提供了一组基础操作用于跨进程更新它的界面。本章会介绍RemoteViews在通知栏和桌面小部件上的应用,分析RemoveViews的内部机制,最后分析RemoteViews的意义并给出一个采用RemoteViews来跨进程更新界面的示例。5.1 RemoteViews的应用RemoteVie...

2018-04-18 11:14:10 96

原创 异常

异常体系1. error/Exception2. 运行时异常和非运行异常异常使用1. 运用Java异常处理机制(1)try...catch语句(2)finally语句:任何情况下都必须执行的代码(3)throws子句:声明可能会出现的异常(4)throw语句:抛出异常2. 异常处理的原则(1)Java虚拟机用方法调用栈(method invocation stack)来跟踪每个线程中一系列的方法调...

2018-04-17 17:05:32 136

原创 内存对象的序列化(Serializable和Parcelable的区别)

序列化:将对象的状态信息转换为可以存储或者传输的形式的过程(1)· Serializeble是java序列化方式,Parcelable是Android特有的序列化方式(2)· 在使用内存的时候,Parcelable比Serializeble性能高(3)· Serializeble在序列化的时候会产生大量的临时变量,从而引起频繁的GC(4)· Parcelable不能使用在将要数据存储在磁盘上的情况...

2018-04-17 16:47:49 872

原创 ANR/OOM及内存泄露的知识

ANRUI卡顿什么是ANRApplication Not Responding Activity中 5秒,广播中 10秒ANR产生的原因· 主线程被IO操作(从4.0之后网络IO不允许在主线程中)阻塞· 主线程中存在耗时的计算Android中哪些操作在主线程· Activity的所有生命周期方法· Service执行· 广播的onReceive· 没有使用子线程的Looper的Handler的Ha...

2018-04-17 16:34:12 1021

转载 View的工作原理

学习内容View的底层工作原理,比如View的测量流程、布局流程以及绘制流程;以及常见的View回调方法;熟悉掌握前面的知识后,自定义View的时候也会更加的得心应手。4.1 初识ViewRoot和DecorViewViewRoot对应于ViewRootImpl类,是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityTh...

2018-04-17 12:14:57 109

原创 网络中的一些知识

Http协议一、一些基本概念(1)协议:指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则(2)Http协议:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。2、URI和URL的区别:(1)URI:是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。 如:file://...

2018-04-16 21:36:50 621

原创 Java反射

1.编译时 vs 运行时编译时:将Java代码编译成.class文件的过程(不牵扯内存)运行时:就是Java虚拟机执行.class文件的过程(牵扯内存) 编译时类型:编译时类型由声明该变量时使用的类型决定运行时类型:运行时类型由实际赋给该变量的对象决定Animal animal=new Dog(); 2.动态绑定-调用引用实例的方法1. 在编译时,是调用声明类型的成员方法(多态的实现原理),也就是...

2018-04-16 17:53:27 117

原创 view的滑动冲突

一、常见冲突场景: (1)外部滑动方向和内部滑动方向不一致 主要是将ViewPager和Fragment配合使用所组成的页面滑动效果,主流应用几乎都会使用这个效果。在这种效果中,可以通过左右滑动来切换页面,而每个页面内部往往又是一个ListView。这种情况是有滑动冲突的,但是ViewPager内部处理了这种滑动冲突,因此采用ViewPager时我们无需关注此问题。但是如果我们采用的是Scroll...

2018-04-16 16:32:07 119

原创 View的事件分发机制

1.为什么会有事件分发机制安卓上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,这个点击事件应该给谁呢?为了解决这一个问题,就有了事件分发机制。2.三个重要的事件分发的方法(1). dispatchTouchEvent方法用于分发事件(2). onInterceptTouchEvent方法用于拦截事件(3). onTouchEvent方法用于处理...

2018-04-16 16:04:55 101

原创 Android中的IPC(进程间通信)机制

一、IPC的说明IPC是Inter-Process Communication的缩写,含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程。IPC不是Android独有的,任何一个操作系统都需要有相应的IPC机制,比如Windows上可以通过剪贴板,管道和邮槽来进行进程间通信;Linux上可以通过命名管道、共享内容、信号量等进行进程间通信。对于Android来说,它是一种基于Linux...

2018-04-16 15:36:27 679

java基础知识

java知识点总结,适合面试前看,总结了java中涉及的面试中出现的高频问题

2018-05-22

空空如也

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

TA关注的人

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