- 博客(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 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关注的人