自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 基于livedata实现的mvvm_clean

一、mvvm是什么引用度娘:MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑m(Model):数据源,主要包括网络数据源和本地缓...

2018-09-03 19:56:18 1043

原创 Maven发布插件使用指南

Maven发布插件使用指南前置maven发布插件可以发布产物到 Apache Maven 代码库。Android Gradle 插件会为应用或库模块中的每个构建变体工件创建一个组件,您可以使用它来自定义要发布到 Maven 代码库的发布内容。需要Android Gradle 插件 3.6.0 及更高版本。Android Gradle 插件发布内容工件组件名称com.android.libraryAARcomponents.variantcom.android.appl

2020-12-09 09:25:49 1341 1

原创 功耗优化-页面停留功耗从100mmA到0

功耗异常,可以通过查看cpu执行情况和布局方式逐步定位。在实际中,耗电统计需要专门的仪器。普通开发者最简单的方式是通过手机的耗电统计。本次主要经过:去除透明度——分析颜色值明暗——去掉软件加速。实现了页面停留功耗从100mmA到0。

2019-08-03 18:28:28 330

原创 动画优化的实践总结

动画类型帧动画:通过序列帧实现,间隔一段时间播放一张图片。实现简单,但是性能最差 补间动画:输入动画类型(透明度,大小,移动,旋转),开始参数和结束参数。通过插值器控制变化速度。实现相对简单,但是并没有真正改变view的所在位置,只是显示变化。 属性动画:ValueAnimator,ObjectAnimator和animatorSet。动画优化的核心,见后续详情帧动画优化实现动画...

2018-12-31 16:56:55 592

原创 android实现图片向上展开和慢慢折叠的过度动画

需要实现的的效果描述:一开始是完全显示的,然后高度慢慢减少,图片自上而下消失。分析:这个效果看似很简单,但是实际上根据常规的android机制,是很难以实现的。常规方案Imageview变化大小,只会整体压缩,不可行 外布局一个RelativeLayout,Imageview靠底部对齐,然后自上而下减少外布局高度,也会压缩图像,还是不可行 用一个空白的布局慢慢遮挡图片,实现...

2018-12-16 22:31:38 3122 2

翻译 自定义控件

1.相关说明View这个类代表用户界面组件的基本构建块。View在屏幕上占据一个矩形区域,并负责绘制和事件处理。View是用于创建交互式用户界面组件(按钮、文本等)的基础类。它的子类ViewGroup是所有布局的父类,它是一个可以包含其他view或者viewGroup并定义它们的布局属性的看不见的容器。实现一个自定义View,你通常会覆盖一些framework层在所有view上调用的标准方...

2018-12-04 23:32:20 154

原创 执行广播反注册时,页面暂停

问题:Caused by: java.lang.IllegalStateException: No hostat android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1194)at android.support.v4.app.FragmentManagerImpl.moveToStat...

2018-12-04 23:28:58 174

翻译 JUnit4的基础知识介绍

JUnit4的常用注解:@Test:测试方法,测试程序会运行的方法,后边可以跟参数代表不同的测试,如(expected=XXException.class)异常测试,(timeout=xxx(毫秒))超时测试@BeforeClass:它会在所有的方法运行前被执行,static修饰@AfterClass:它会在所有的方法运行结束后被执行,static修饰@Before:会在每一个测试方法...

2018-12-03 23:17:35 327

原创 webView脚本js定时器无限执行的问题

webView脚本定时器无限执行的问题2017年3月一、前言(问题提出)2017年3月31日,开发人员在fiddler抓包自测过程中,发现页面停留在一个没有任何网络请求的页面时,fiddler显示不断有相同URL的网络请求,间隔大概5s。该网络请求在不断的销毁系统资源,增加系统的功耗。二、问题原因过程通过步骤复现,当进入一个webView页面后,就算该WebView结束后(...

2018-12-03 23:16:38 1376

原创 Android网页广告植入规避方案

Android网页广告植入规避方案一、前言(问题提出)网页经过dns,运营商或者被截取的时候,就可能被非法注入广告,甚至是诈骗链接。在移动端尤其严重,特别是webView。二、实现方案(实现、改进方案、解决思路)问题现象                                        小米商城被植入广告图问题分析dns植入,经过dns时,有可能被注入...

2018-12-03 23:12:24 352

原创 图片加载缓存策略

背景图片如果需要可动态配置,就需要使用网络图片;目的:图片及时刷新,高速缓存,不闪现;实现:1、网络图片url:必须保证每个版本的url地址都不一样,客户端一般使用url作为key来缓存2、加载策略:(1)layout文件,固定图片大小,并且声明一张默认图片(2)读取本地缓存的图片,读取成功则设置;(3)请求网络图片url,比较上次的url: SharedPref...

2018-12-03 23:08:49 328

翻译 Fragment懒加载

Fragment的resume和onPause是依赖于Activity的;不是真正的状态应用场景:viewPager+Fragment+ListView中viewPager缓存左右两个页面,会刷新listview数据,直接改变当前的listview,出现错误,加载异常等问题;实现:public abstract class LazyFragment extends BaseF...

2018-12-03 23:04:59 105

原创 单例模式

单线程: public static Object getInstant(){ if(mIntants == null){ mIntance = new Object(); } return mIntance; }说明:单线程比较简单,只是需要保证第一次new对象,后续复用即可,常见于Application的...

2018-12-03 22:59:40 698

原创 crash的实践总结

相信编译器大部分Crash应该都是有空指针异常导致的 对于大部分的简单的空指针异常,请相信编译器。Android studio中,对于大部分可能出现异常的情况,都会有相应的警告。 请尽量处理编译器的警告 大部分项目,应该eclipse中开发,可以转换为android studio项目,或者将代码复制到android中。 android studio的警告,错误提示比eclipse好的多...

2018-12-03 22:52:49 469

原创 Andoroid性能优化

一、页面启动优化:   页面启动慢主要有2种页面渲染慢和java代码初始化慢的问题。页面渲染: 1、最少布局嵌套  布局嵌套渲染极其耗时,减少不必要的嵌套就能大大提高启动速度。原理可参照view的渲染过程新版本谷歌推荐ConstraintLayout布局,该布局能只有一层布局就能界面绘制。但是对于简单的使用releactionLayout和LinearLayout布局,简单的绘...

2018-12-03 22:44:11 218

原创 内存优化排查

一、摘要该部分属于进阶内容,要先掌握了java内存回收机制,说白了就是引用计数法和可达性分析法。但是代码写的再认真,也难免出现一两个差错。这一两个差错就会导致内存泄漏,轻则内存增大,重则内存溢出。二、背景自从引入了WebView,内存变得难以测试,因为WebView内存不可控,一加载就导致内存暴涨,所以最近比较少跑内存测试了。直至在jara系统上反馈了项目出现内存crash,没办法,必...

2018-12-03 22:38:01 231

原创 Systrace的使用总结

目的: 为了提高apk的性能,使得apk在任何情况下,包括:cpu使用频繁,内存较少,用户重度使用手机(即用户使用一年后的情况,包含大量的图片,音乐和应用数据)都能够快速启动。 慢启动标准:1000ms。 一般启动标准:对标友商的启动时间。(一般为100ms)统计方法: monkey测试平台自动统计启动最久的时长和超时次数。  在event log中,搜索“am_activi...

2018-12-03 22:30:49 1543

原创 maven环境搭建

1、下载:http://maven.apache.org/download.cgi2、解压文件到相应的地址:D:\apache-maven-3.3.93、配置环境变量:计算机->属性->高级系统设置->环境变量新建变量名:MAVEN_HOME变量值:D:\apache-maven-3.3.9编辑系统变量  Path         添加变量值: ;%MAVEN_HOME

2016-12-04 11:35:56 317

原创 eclipse che安装教程

eclipse che是新一代的IDE,不同于以前的版本,他是基于浏览器的开发工具。   根据个人的感受,这应该利用虚拟机运行类似tomcat的项目,然后通过浏览器访问相应路径而实现的。所以,就需要安装虚拟机。  步骤一:下载eclipse che:https://www.eclipse.org/che/download/。   步骤二:安装DockerToolbox-1.10

2016-03-20 18:59:26 5016 1

原创 hibernate delete update 失效问题

最近在搭建一个springmvc+hibernate+spring框架的时候,花了一个多月,一开始只是注重实现功能,根本没在意代码的简洁性和优化。后面优化代码的时候,发现hibernate的Session操作delete和update不行了,根本就无效,要执行session.flush()才能执行sql语句。session原理:其实我们执行session更新和删除操作的时候,不会立即执行,要执行f

2016-03-08 10:12:12 8483 3

原创 继承和接口的设计

学习了一门的语言的时候,一开始总是这侧重功能的实现。很少去关注优化设计,底层设计和架构设计,我想,这是也“码农”的缺陷吧。一开始的时候,肯定有学习过继承和接口的区别吧,但是实际使用者却很少去关注这两者的区别。编程久了,越来越觉得这两者的使用真的很讲究。  首先说下继承,我把继承分为2种,常用继承和抽象类继承。概念与区别:  常用继承:就是普通的父类,子类继承。子类拥有父类的所以属性和方

2016-02-17 16:48:08 494

原创 自定义弹窗

浏览器自带的弹窗不好用,那就自定义把使用:然后:在js中var d = dialog({            width:250,            height:50,            lock:true,            title: '提示',            content: '亲,主体超过字数了,显示不佳,请核实哈。

2016-02-12 20:20:59 322

翻译 图片常用处理

图片灰化处理var imgdate=context.getImageData(0,0,imageWidth,imageHeight);            var red,green,blue,gray;           // alert(imgdate.data.length);            for (var i=0;i            {

2016-02-12 20:16:19 417

翻译 手机图片js在线剪切

现在js在线剪切的方案很多,但是基本都是电脑的,在手机上就不适用了;所有,我就找了一个方案,然后修改其中的事件处理。把电脑点击事件改成手机触屏事件。方案:html代码:                                js:顺序不要打乱。var isIE = (documen

2016-02-12 19:58:32 784

原创 java常见问题

我参加了很多面试和笔试,遇到了很多相同的问题。又在贴吧看到一套很符合的面试题目,就顺便整理下。1、int和Integer的区别,   Integer是封装类,就是一个对象,int是基本数据类型,只能简单计算。 2、系列化和反系列化实现;对象--字节序列的转化。字节序列,可以保存于文件,网络传输。java.io.ObjectOutputStream中write

2016-02-11 22:35:34 404

原创 策略模式和桥接模式的区别。

策略模式:设计一个接口或者抽象类。public interface Employment{ public void work();}多种具体实现:public class Enterprise implements Employment{  public void work("创业");}.........容器对象:public clas...

2016-02-06 09:40:01 1944

原创 工厂模式理解

工厂模式分为三种:简单工厂,工厂方法,抽象工厂。简单工厂:一个工厂负责一种产品。eg:一个手机工厂生产一种手机。工厂方法:设计一个工厂接口。实现多个工厂。eg:一个手机工厂生产2种型号的手机。设计:public interface Factory{public void create();} class FactoryOne{public voi

2016-02-03 17:11:21 430

翻译 HTML5学习笔记

HTML5学习笔记一、前言作为新一代超文本标记语言,HTML5具有跨平台、跨分辨率、版本控制简单的优势,它包含的很多新特性,都是针对终端设备,为的就是在以后在终端设备上有更好的体验和交互。 目前,因为HTML5的强大功能,flash甚至停止更新,支持HTML5。足以可见,HTML5的广泛应用型和良好的发展前景。二、内容规则1.     新特性应该基于 HTML、CSS、DOM

2016-01-29 20:55:07 427

翻译 css3学习笔记

css3整理简介l 选择器l 框模型l 背景和边框l 文本效果l 2D 转换l 动画l 多列布局l 用户界面 边框l border-radiusl       border-radius:25px;   边框圆角l box-shadow                 边框阴影l       box-shadow: 10px 10px 5

2016-01-26 17:13:47 303

原创 开发人员:事务的理解

spring整合hibernate时,有一个重要的概念就是事务代理:事务:这里的事务就是业务层的一个函数;性质:原子性:要么做完,要么不做;           隔离性:不应该被被的事务干扰而影响正确结果,           一致性:就是数据不能不一致;           持久性:事务的影响是永久的。问题1:业务执行到中间,出错了,不能继续执行;这是已经做的

2016-01-22 15:09:53 249

转载 Spring管理 hibernate 事务配置的五种方式

Spring配置文件中关于事务配置总是由三个组成部分,DataSource、TransactionManager和代理机制这三部分,无论是那种配置方法,一般变化的只是代理机制这块! 首先我创建了两个类,一个接口一个实现:Java代码  package com.dao;  public interface UserDao {      publ

2016-01-22 11:06:09 523

原创 spring mvc常用注解

Struts和springMVC的主要区别就是:     Struts采用配置文件管理请求映射,实体映射,和配置bean,注入等。就是采用配置文件管理的,包含Struts.xml;hibernate配置文件和,实体配置,spring配置文件等;      springmvc就是简化了大量的配置文件,采用基于注解的管理方法;主要包含请求,实体,业务,控制器等好处:在Struts中,比如你

2016-01-21 10:26:50 420

原创 eclipse自定义注释

一个正规的公司肯定会严格要求注释;主要的注释包含,类名注释,方法名注释。操作:preferences-java-code style-comments ;选中它,里面有很多情况的注释,包含:file:文件注释,method方法注释模板;点击edit就可以进入编辑状态;下面有个insert  variable,可以添加很多元素,包含作者,时间啊。一个大项目千万不能

2016-01-20 15:50:12 328

原创 字体大小(px,em,rem)

1.目前主流浏览器的默认字体大小都是16px;px:表示绝对大小,数值多少就是多少,不会受任何标签的影响,国内最主流的表示方法。em:相对大小,相对于父元素的大小;比如父元素为16px;则1em=16px;html页面中,第一个父元素就是body;为了方便计算,使用时经常将body:fond-size=62.5%;即10px;方便计算;但是要注意;当hello此时:he

2016-01-11 09:23:24 664

原创 spring整合hibernate

hibernate封装了jdbc,让我们可以使用面向对象的方法操作一个类,从而实现了数据库表的的crud;单纯的hibernate实现数据库添加一条记录,步骤:1.加载hibernate配置信息;2.加载hibernate——数据库映射关系;3;开启Session;4.开启事务5.创建对象;6通过Session保存对象;7.提交事务;8.关闭Session;代码: User use

2016-01-08 09:28:37 342

原创 java错误和异常

错误:error:非常严重;不处理无法编译;不过很容易处理;一般也就是变量名错误,函数写错了这些;还有就是内存;环境问题了异常:Exception:编译时异常;必须使用try..catch才能运行;比如IOException,SQLException;        RuntimeException:运行时异常:就是通过编译了;但是运行过程中就异常了,比如:nullpointexcepti

2016-01-07 11:15:33 290

原创 spring配置文件中事务代理理解

org.hibernate.dialect.MySQLDialect                                  update                                 true                                 true

2016-01-07 11:04:38 372

原创 spring AOP理解

AOP:面向切面编程。讲的很难理解;我自己的理解:就在一系列的方法里,他们都需要一个前置操作或者后置操作;比如:处理前打印一些参数;处理后回收空间。需要实现的接口:MethodBeforeAdvice,AfterReturningAdvice;每个方法都实现这些方法,这样代码复用性就很低了;AOP就是把公共操作集合起来;通过配置;让方法调用时就能自动调用公共操作;术语:切面as

2016-01-06 09:46:48 432

翻译 jsp常用内置对象

服务器:包括java后台,jsp代码;客户端:编译后的html页面。jsp也是服务器端;在实际环境中,解析jsp代码,编译为html页面; out 对象:负责管理对客户端的输出 request 对象:负责得到客户端的请求信息 response 对象:负责向客户端发出响应 session 对象:负责保存同一客户端一次会话过程中的一些信息application

2016-01-05 16:51:25 345

原创 数组,字符串

java使用过程中,最讲究而且使用很宽泛的就是数组和字符串,也是面试过程中的2个常见问题;数组:ArrayList:地址连续,通过位移访问,读取很卡,数组后面添加和删除很有优势;           LinkList:由地址指向,所以修改时,只要改变地址的指向即可,更新有优势;字符串:string:常量,但是每次赋值时都是创建新变量,读取,内存代价小;       

2016-01-04 16:59:00 243

空空如也

空空如也

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

TA关注的人

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