<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[maoxian007的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/maoxian007</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; maoxian007]]></copyright><item><title><![CDATA[Android 自定义View，绘制 刷新]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/87637093</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/87637093</guid><author>maoxian007</author><pubDate>Mon, 18 Feb 2019 18:45:00 +0800</pubDate><description><![CDATA[学习安卓的高级技巧，其中的自定义View是必备课程。目前在研究该方面的东西。

以下是常见绘制后刷新布局的方法：区别。

invalidate() ：
请求重绘View树，即draw()过程。整个刷新UI，并且从头到尾并不会触发onMeasure（）方法（控制大小用）。

如果是View就重绘View,如果是ViewGroup就全部重绘。

一般引起invalidate()操作的函数如下：

1、...]]></description><category></category></item><item><title><![CDATA[Java 关键字 volatile 的应用场景]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/82465344</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/82465344</guid><author>maoxian007</author><pubDate>Thu, 06 Sep 2018 17:46:20 +0800</pubDate><description><![CDATA[synchronized关键字是防止多个线程同时执行一段代码，那么就会很影响程序执行效率，而volatile关键字在某些情况下性能要优于synchronized，但是要注意volatile关键字是无法替代synchronized关键字的，因为volatile关键字无法保证操作的原子性。通常来说，使用volatile必须具备以下2个条件：

1）对变量的写操作不依赖于当前值

2）该变量没有包含在具...]]></description><category></category></item><item><title><![CDATA[聘请员工协议书]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/81027571</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/81027571</guid><author>maoxian007</author><pubDate>Fri, 13 Jul 2018 11:23:19 +0800</pubDate><description><![CDATA[聘请员工协议书 　　甲方（聘用单位）： 　                           　              乙方（受聘人）： 　                                                                                 身份证号码      ：甲乙双方根据国家的有关法规，规定，按照自愿，平等，协商一致的原则，签...]]></description><category></category></item><item><title><![CDATA[Litepal  建表报错]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/80310204</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/80310204</guid><author>maoxian007</author><pubDate>Mon, 14 May 2018 15:28:16 +0800</pubDate><description><![CDATA[org.litepal.exceptions.DatabaseGenerateException：表示SQL解析或执行出现错误的异常。创建表BookStores（id整数主键自动增量，comeId文本，upDate文本，拇指文本，标题文本，输入文本）这是因为表结构的实体类中的字段（属性）用了SQL语法中的关键...]]></description><category></category></item><item><title><![CDATA[Java 单元测试JUnit----输入数据]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/80255205</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/80255205</guid><author>maoxian007</author><pubDate>Wed, 09 May 2018 16:25:44 +0800</pubDate><description><![CDATA[在进行单元测试的时候，会自己造一些数据。我们做单元测试，目的就是为了，把bug提前测出来，不能等到产品发布以后，到用户那里才发现bug。那样程序会很尴尬。只有在之前发现bug，才是体现，，程序员写的代码的高效性。那么在进行单元测试的时候，bug的发生，很大的可能是在数据的边界值。比如我们在 测试一个public Boolean maxInt(List&amp;lt;Int&amp;gt; list){ }我们要测...]]></description><category></category></item><item><title><![CDATA[关于singleTop 并没有调用onNewIntent()]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/80168791</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/80168791</guid><author>maoxian007</author><pubDate>Wed, 02 May 2018 17:21:40 +0800</pubDate><description><![CDATA[在做版本升级时，我们的版本升级采用的是 activity。在收到版本升级推送时，跳转到版本升级界面。因为是版本升级不论当前在哪个界面，都要跳转到版本更新界面。所以写在BaseActivity 所以如果有多个activity存活时，也就是存在多个BaseActivity 的实例，那么就会执行多次。 所以想到将activity的启动模式设置为singleTop  栈顶复用。但是在调试时，发现，在跳转到...]]></description><category></category></item><item><title><![CDATA[环信最新SDK  3.4.0.1   配置实现，华为的离线推送。]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/80167602</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/80167602</guid><author>maoxian007</author><pubDate>Wed, 02 May 2018 16:44:48 +0800</pubDate><description><![CDATA[下面是环信的关于华为推送的文档SDK3.4.0.1华为推送重大更新为了方便用户自己升级华为推送相关sdk，环信 SDK 在3.4.0.1之后的版本中将华为推送相关从 IM SDK 中移除，同时提供对应的上传推送token接口供开发者调用，以后的版本就需要开发者自己去集成华为推送相关功能，然后调用下边的方法将 token 发送到环信服务器：EMClient.getInstance().sendHMS...]]></description><category></category></item><item><title><![CDATA[Spek - 规范框架]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79914126</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79914126</guid><author>maoxian007</author><pubDate>Thu, 12 Apr 2018 15:11:18 +0800</pubDate><description><![CDATA[现在一会，一个小 的 我们一直在一个名为斯贝克项目，一个框架，允许你写可执行的规范。它允许您以更易于理解的方式编写规范（即测试），更重要的是描述性方式，而不必诉诸长测试名称，下划线或正则表达式。现在它已经达到了它的第一个里程碑，它足够适合开始在项目中使用，我们随时准备提供反馈和功能要求！它甚至有自己的网站。简要介绍Spek是一个规范框架。如果您熟悉茉莉花，摩卡，RSpec或机器规格，那么您会立即看...]]></description><category></category></item><item><title><![CDATA[Spek：JetBrains出品的JVM语言规范框架]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79913751</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79913751</guid><author>maoxian007</author><pubDate>Thu, 12 Apr 2018 14:53:02 +0800</pubDate><description><![CDATA[原地址 : https://www.aliyun.com/jiaocheng/279600.html摘要：Spek是JetBrains(IntelliJIDEA的开发商)开发的一个针对JVM语言的规范框架,作用是帮助开发者轻松地以一种清晰的、易理解的、可读的方式来定义规范。为什么需要一个规范框架?测试用例不仅要能够检查出开发者所编写的代码的执行和工作情况,也要能够检查开发者的实现是否与需求相匹配。...]]></description><category></category></item><item><title><![CDATA[MVP模式]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79912933</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79912933</guid><author>maoxian007</author><pubDate>Thu, 12 Apr 2018 14:08:42 +0800</pubDate><description><![CDATA[百度百科解释的很好了。地址: https://baike.baidu.com/item/MVP%E6%A8%A1%E5%BC%8F/10961746]]></description><category></category></item><item><title><![CDATA[Android布局优化总结]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79882460</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79882460</guid><author>maoxian007</author><pubDate>Tue, 10 Apr 2018 16:02:28 +0800</pubDate><description><![CDATA[Android 工具 Layout Inspector   布局检测工具的使用这里可以提醒大家在开发工程中可以习惯性的通过Layout Inspector查看当前UI资源的分配情况。 Layout Inspector是随AndroidSDK发布的工具，它是Android自带的非常有用而且使用简单的工具，可以帮助我们更好地检视和设计用户界面(UI)，绝对是UI检视的利器。1. 从可视化的角度直观地获...]]></description><category></category></item><item><title><![CDATA[AllowBackup/FullBackupContent Problems]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79878924</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79878924</guid><author>maoxian007</author><pubDate>Tue, 10 Apr 2018 11:42:10 +0800</pubDate><description><![CDATA[
AllowBackup/FullBackupContent Problems  The allowBackup attribute determines if an application's data can be backed up and restored. It is documented at http://developer.android.com/reference/android...]]></description><category></category></item><item><title><![CDATA[react-native 的版本问题。]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/77446829</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/77446829</guid><author>maoxian007</author><pubDate>Mon, 09 Apr 2018 14:52:48 +0800</pubDate><description><![CDATA[有时候react-native 报错的，大部分原因是因为，版本  不匹配的原因。 因为需要依赖，所以各个库之间的依赖的版本不同版本对不上，就会报各种的错误，在此只是提供一个解决问题的思路。2，权限问题，大部分时候，在更新模块的时候不能成功， 是因为对权限，没有。...]]></description><category></category></item><item><title><![CDATA[Android中获取网络图片的三种方法]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/41514967</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/41514967</guid><author>maoxian007</author><pubDate>Mon, 09 Apr 2018 14:46:55 +0800</pubDate><description><![CDATA[1.直接获取：（容易：ANR，不建议） mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ;Drawable drawable = loadImageFromNetwork(IMAGE_URL);mImageView.setImageDrawable(drawable) ; 公用方法： private Drawab...]]></description><category></category></item><item><title><![CDATA[Android Service两种启动方式详解（总结版）]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79866350</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79866350</guid><author>maoxian007</author><pubDate>Mon, 09 Apr 2018 14:44:44 +0800</pubDate><description><![CDATA[1. 概念开始，先稍稍讲一点android中Service的概念和用途吧~Service分为本地服务（LocalService）和远程服务（RemoteService）：1、本地服务依附在主进程上而不是独立的进程，这样在一定程度上节约了资源，另外Local服务因为是在同一进程因此不需要IPC，也不需要AIDL。相应bindService会方便很多。主进程被Kill后，服务便会终止。2、远程服务为独...]]></description><category></category></item><item><title><![CDATA[android防止service多次执行onStartCommand]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79865958</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79865958</guid><author>maoxian007</author><pubDate>Mon, 09 Apr 2018 14:23:32 +0800</pubDate><description><![CDATA[原地址：https://blog.youkuaiyun.com/yuzhiqiang_1993/article/details/78211385service作为Android四大组件之一，我们会经常使用它。 service的启动方式有两种 1）使用Context.startService（Intent）启动 2）通过bindService启动（该方式service的生命周期跟activity的生命周期相关联...]]></description><category></category></item><item><title><![CDATA[Android中Service的onStartCommand()方法中intent为null的问题]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79865788</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79865788</guid><author>maoxian007</author><pubDate>Mon, 09 Apr 2018 14:13:06 +0800</pubDate><description><![CDATA[原地址： http://www.liveslives.com/ https://blog.youkuaiyun.com/cp790621656/article/details/40357481在Demo上，Start一个Service之后，执行顺序：onCreate - &amp;gt; onStartCommand然后关闭应用，会重新执行上面两步。但是把代码拷贝到游戏工程发现，关闭游戏后，只执行了onStart，却...]]></description><category></category></item><item><title><![CDATA[桌面图标显示未读消息的红点的工具类---Android]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79848056</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79848056</guid><author>maoxian007</author><pubDate>Sun, 08 Apr 2018 10:05:49 +0800</pubDate><description><![CDATA[/** *  *  桌面图标显示未读消息的红点的工具类。 */public final class BadgeUtil {    private BadgeUtil() throws InstantiationException {        throw new InstantiationException(&quot;This class is not for instantiation&quot;);    ...]]></description><category></category></item><item><title><![CDATA[从0到1学习 Kotlin 之—— 类代理]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79740089</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79740089</guid><author>maoxian007</author><pubDate>Thu, 29 Mar 2018 11:37:20 +0800</pubDate><description><![CDATA[类代理代理模式 给实现继承提供了很好的代替方式， Kotlin 在语法上支持这一点，所以并不需要什么样板代码。Derived 类可以继承 Base 接口并且指定一个对象代理它全部的公共方法：interface Mother {
	fun color()
}/**实现*/class Jones(val color : String) : Mother {
	override fun color() ...]]></description><category></category></item><item><title><![CDATA[从0到1学习 Kotlin 之—— kotlin 接口]]></title><link>https://blog.youkuaiyun.com/maoxian007/article/details/79739275</link><guid>https://blog.youkuaiyun.com/maoxian007/article/details/79739275</guid><author>maoxian007</author><pubDate>Thu, 29 Mar 2018 11:15:00 +0800</pubDate><description><![CDATA[接口Kotlin 中的接口和Java8中的很相似，既有抽象方法，又可以有实现。和抽象类不同的是，接口不能保存状态。可以有属性但必须是抽象的，或者提供访问器的实现。接口用关键字 interface 来定义：interface Mother {
	fun color()
	fun size() {
	//函数体是可选的
	}
}接口的实现一个类或对象可以实现一个或多个接口class  Jack:Mot...]]></description><category></category></item></channel></rss>