<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[androidxiaogang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/androidxiaogang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; androidxiaogang]]></copyright><item><title><![CDATA[策略者模式和工厂模式的应用]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/85860439</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/85860439</guid><author>androidxiaogang</author><pubDate>Sat, 05 Jan 2019 17:11:20 +0800</pubDate><description><![CDATA[##1策略者模式
在开发中经常遇到的一种情况就是，我们在不同的业务情况，实现不同的业务，比如学生
成绩&amp;amp;gt;=90   优秀
成绩&amp;amp;gt;=80 &amp;amp;lt;90  良好
成绩&amp;amp;gt;=70 &amp;amp;lt;80   中等
成绩&amp;amp;lt;60   不及格
在这种情况下，我们需要用if else来判断出每种情况，给不同的评分。
 if(grade&amp;amp;gt;=90){
            toG]]></description><category></category></item><item><title><![CDATA[Android中常见的安全问题]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/80905400</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/80905400</guid><author>androidxiaogang</author><pubDate>Tue, 03 Jul 2018 22:34:11 +0800</pubDate><description><![CDATA[Android中的安全问题，贯穿APK开发的始终，从编码，到与服务器交互，最线打包上线运行在终端上，都存在安全隐患。如果这些隐患排查或者规避，可能给APK或者服务器造成灾难性的后果。

1、SQL注入攻击

2、组件暴漏



3、Log敏感信息泄露



4、权限问题

5、慎重使用开源库



6、代码混淆，加密，加固



7、webview



8、zip目录攻击



9、网络安全问题...]]></description><category></category></item><item><title><![CDATA[Android中设计模式-Builder模式]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/80586631</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/80586631</guid><author>androidxiaogang</author><pubDate>Wed, 06 Jun 2018 18:03:32 +0800</pubDate><description><![CDATA[引入：当我们创建对象传递参数的时候，往往通过构造方法来传，如下代码：

上面代码这样写没有问题，但是如果参数不断的增加，而且增加可行，必选字段，这样使我们的代码很难编写，而且不容易实现，大量的增加工作量


1、遇到多个构造器参数时考虑使用构造器 
     这时候，我们就可以考虑使用构建器模式。 
2、定义：将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。

3、使用场...]]></description><category></category></item><item><title><![CDATA[多线程]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/80541282</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/80541282</guid><author>androidxiaogang</author><pubDate>Mon, 04 Jun 2018 15:53:09 +0800</pubDate><description><![CDATA[1、多线程比单线程快吗 
   大一般情况下，多线程是比单线程快的。但不是一定 
   在单核cpu的情况下，如果做的工作是cpu密集型的，开多个线程，反而有可能比线程要慢，线程间的切换是需要消耗资源和时间的。 
   但是，大部分情况下，我们做的工作是IO密集型的，消耗的大部资源在IO上，因此CPU还是处于空闲状态，这时候，利用多线程，可以充分的利用资源 
   举个例子： 
   用挖掘机来挖...]]></description><category></category></item><item><title><![CDATA[Android设计模式-装饰模式]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/80489524</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/80489524</guid><author>androidxiaogang</author><pubDate>Mon, 28 May 2018 22:05:45 +0800</pubDate><description><![CDATA[1、定义

动态给的一个对象添加额外的职责或者功能。比生成子类更为灵活。

2、适用场景

动态的扩展类的功能



3、UML图





4、简单的实现

1、定义Person抽象类，需要穿衣服的抽象方法

public abstract class Person  {
   public  abstract void dressed();
}

2、Person实现



public cl...]]></description><category></category></item><item><title><![CDATA[Android设计模式-代理]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/80466290</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/80466290</guid><author>androidxiaogang</author><pubDate>Sun, 27 May 2018 00:05:34 +0800</pubDate><description><![CDATA[##1、代理模式##2、使用场景##3、示例]]></description><category></category></item><item><title><![CDATA[Android中的动画和原理(属性动画)]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/80224719</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/80224719</guid><author>androidxiaogang</author><pubDate>Mon, 07 May 2018 13:50:51 +0800</pubDate><description><![CDATA[1、属性动画

属性动画通过改变对象的属性来展示的动画效果，补间动画只是设置当前View在区域内移动，产生的动画效果，其实原View的还在原地，没有发生改变。 
但属性动画改变了对象的属性。也就是改变了对象的颜色，位置，宽高等。



2、示例



public class MainActivity extends AppCompatActivity {
    private ImageVie...]]></description><category></category></item><item><title><![CDATA[Android中的动画和原理(帧动画和补间动画)]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/80188372</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/80188372</guid><author>androidxiaogang</author><pubDate>Thu, 03 May 2018 22:29:31 +0800</pubDate><description><![CDATA[1、Android中的动画分类

Android中的动画可以分为三类：帧动画，补间动画，和属性动画




  动画分类
  说明



  帧动画
  通过不停的播放图片产生的动画效果


  补间动画
  对View的平移，旋转，缩放，透明产生效果


  属性动画
  动态的改变属性产生动画效果






2、帧动画及其原理



原理

帧动画是按照一定的顺序播放一系列图片，从而产生动画...]]></description><category></category></item><item><title><![CDATA[Android自动化测试一（Uiautomator）]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/79967459</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/79967459</guid><author>androidxiaogang</author><pubDate>Mon, 16 Apr 2018 22:06:59 +0800</pubDate><description><![CDATA[1、Android自动化测试



1、自动化测试的目的：

1、减少人为的机械性的操作测试 
2、大量测试（比如点击10000次） 
3、长保时间测试（通话5小时） 
4、节省时间，成本，覆盖面比较广



2、Android中常用的自动化测试

1、Monkey是Android SDK自带的测试工具，在测试过程中会向系统发送伪随机的用户事件流，如按键输入、触摸屏输入、手势输入等)，实现对正在开...]]></description><category></category></item><item><title><![CDATA[Bitmap的高效加载]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/79904748</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/79904748</guid><author>androidxiaogang</author><pubDate>Wed, 11 Apr 2018 22:49:00 +0800</pubDate><description><![CDATA[1、Android内存分配

Android给每个APK分配相应的内存空间，一般情况下只要APK超过个空间的限制，就会报OOM



    Runtime rt = Runtime.getRuntime();
    long maxMemory = rt.maxMemory();
    Log.i(&quot;maxMemory:&quot;, Long.toString(maxMemory / (1024 *...]]></description><category></category></item><item><title><![CDATA[ArcGis Failed to open file. May not be a valid tile package]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/79664368</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/79664368</guid><author>androidxiaogang</author><pubDate>Fri, 23 Mar 2018 10:47:36 +0800</pubDate><description><![CDATA[                              ArcGis Failedto open file. May not be a valid tile package  在使用ArcGIS的时候遇到一些错误：官方网站：https://developers.arcgis.com/android/10-2/1、Failed to open file. May not be a valid t...]]></description><category></category></item><item><title><![CDATA[Java RSA]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/78447169</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/78447169</guid><author>androidxiaogang</author><pubDate>Sun, 05 Nov 2017 00:00:12 +0800</pubDate><description><![CDATA[在数据传递过程中，一些非常重要的信息必须经过加密处理，防止其他人获取或者篡改信息。这就有了数字签名，数字签名处理的问题主要是两点 
1、发送信息的人是真实确定的。 
2、发送的信息是加密的且没有经过篡改的。 
 
数字签名：保证数据发送人的正解性和发送内容没有经过篡改 
数字摘要：发送的信息不是明文，别人获取到也难以解读信息。1、数字签名数字签名，就是只有信息的发送者才能产生的别人无法伪造的一段数字]]></description><category></category></item><item><title><![CDATA[Android IPC、Binder和AIDL]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/76727519</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/76727519</guid><author>androidxiaogang</author><pubDate>Sat, 05 Aug 2017 17:28:25 +0800</pubDate><description><![CDATA[1、前言 IPCPC(Inter-Process Communication)进程间通信，提供了各种进程间通信的方法。不仅是Android，其他语言也大很多情况下需要进程间通信的。Android本质上属于Linux，它的跨进程通信也基于Linux进程通信的原理。在Linux C编程中有几种方法 
(1) 半双工Unix管道 
 (2) FIFOs(命名管道) 
(3) 消息队列 
(4) 信号量]]></description><category></category></item><item><title><![CDATA[android adb]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/73824192</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/73824192</guid><author>androidxiaogang</author><pubDate>Tue, 27 Jun 2017 22:02:36 +0800</pubDate><description><![CDATA[1、ADB1、adb adb（Andorid Debug Bridge）是安卓调试桥，Android 调试桥(adb)是多种用途的工具，该工具 可以帮助你管理设备或模拟器的状态。在以前eclipse开发android的时候，经常提示ADB无法启动 或不能连接的错误解决，这个时候我们需要重启eclipse或者重启adb。as上使用的adb连接比较稳定，断开连接的情况比较少了。 ADB是android]]></description><category></category></item><item><title><![CDATA[Git常用命令]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/73750050</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/73750050</guid><author>androidxiaogang</author><pubDate>Mon, 26 Jun 2017 22:37:05 +0800</pubDate><description><![CDATA[1、Git分布式版本控制系统Git与SVN的区别 
1、SVN集中式了，就是只有在服务器上才有一个完全版本（历史版本），而其他都是从服务器上下载的版本（一般只有一个），当提交时，把当前版本提交给服务器。别人使用是从服务器上下载使用。 
2、Git分布式版本控制，没有中央服务器。每一个电脑上都有一个完全（包括历史版本）库2、常用命令1、基本常识命令1、cd ：进入到某个磁盘，或者磁盘的文件夹下$ cd]]></description><category></category></item><item><title><![CDATA[工厂模式]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/73197035</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/73197035</guid><author>androidxiaogang</author><pubDate>Wed, 14 Jun 2017 00:32:58 +0800</pubDate><description><![CDATA[1、工厂模式的作用工厂模式是用来创建对象的。但是，创建可以用new创建对象，为什么要用工厂模式呢？比如说我们创建一个Sample对象Phone s=new Phone ();看上去并没有什么不妥的地方啊，平常也一直这样写代码的。但是我们想想工作中如果Phone创建的时候要传入一个对象 
那么代码可以写成这样Phone s=new Phone (context);如果再加一个呢？Phone s=new]]></description><category></category></item><item><title><![CDATA[Android NDK(2、基础知识)]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/72637873</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/72637873</guid><author>androidxiaogang</author><pubDate>Tue, 23 May 2017 11:07:41 +0800</pubDate><description><![CDATA[1、.cpp、.h、.c文件的区别1、.cpp和.h文件的由来编译器编译代码的时候首先先编译各模块，然后再将各模块链接为最终的可执行程序 
一般来说，一个文件就编译为一个模块 
但是，各模块要能链接到一起，必须有一些共同的地方，例如模块A里面有一个函数，模块B想要使用这个函数，它就必须知道模块A的一些信息才行。体现在代码上，就是有些代码必须在几个文件里都写一遍 
此时我们将这样的代码写在一个单独的文]]></description><category></category></item><item><title><![CDATA[Android NDK(1、简单入门和遇到的问题)]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/72510984</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/72510984</guid><author>androidxiaogang</author><pubDate>Thu, 18 May 2017 22:18:57 +0800</pubDate><description><![CDATA[1、NDK环境配置1、NDK下载和路径配置NDK Location 
2、在grale.properity中添加android.useDeprecatedNdk=true2、简单示例1、Jni测试方法public class JniTest {
    static {
        System.loadLibrary("jniStr");
    }
    public static nat]]></description><category></category></item><item><title><![CDATA[android内存泄露]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/70258512</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/70258512</guid><author>androidxiaogang</author><pubDate>Thu, 20 Apr 2017 14:48:32 +0800</pubDate><description><![CDATA[1、android中的内存泄露对于android中一些无用的对象，比如activity,view长期持有这些对象，导致无法被GC回收利用，再次使用的，重新申请内存。长久下去，应用程序无法分配新内存，导致OOM。 
大部分内存泄露，不会直接导致程序崩溃，但长期下去，应用程序无法负担。一反面使用app耗用大量内存，卡顿，别一方面。最终还是可能导致OOM导常。square比较好用的内存检测工具 
http]]></description><category></category></item><item><title><![CDATA[android事件分发和案例]]></title><link>https://blog.youkuaiyun.com/androidxiaogang/article/details/69234025</link><guid>https://blog.youkuaiyun.com/androidxiaogang/article/details/69234025</guid><author>androidxiaogang</author><pubDate>Wed, 05 Apr 2017 12:58:30 +0800</pubDate><description><![CDATA[1、事件分发android控件层次嵌套关系（平级嵌套，父子嵌套）的视图关系，也就产生view(viewgroup)对触摸或者点击事件的消费关系，每一个控件都可以消费或者拒绝消费事件，在嵌套的布局中，关系可能更复杂些。android中的事件分发机制，保证我们想要的view获取到相应的事件。 
view和viewgroup本质是做为view，但对于事件分发机制还是有很多区别，viewgroup可以做为v]]></description><category></category></item></channel></rss>