<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[andyhxc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/andyhxc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; andyhxc]]></copyright><item><title><![CDATA[java 弱引用的再理解]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/115915465</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/115915465</guid><author>andyhxc</author><pubDate>Tue, 20 Apr 2021 18:33:25 +0800</pubDate><description><![CDATA[java中的引用类型包括强引用、弱引用、软引用和虚引用。具体各种引用类型的作用和差别这里就不将了，这里主要讲一个在实际开发过程中遇到的一个弱引用的问题，做个记录。


class MainActivity : AppCompatActivity() {

    var view : View ? =null
    lateinit var viewWeakRef: WeakReference&lt;View&gt;

    override fun onCreate(savedInstanceStat]]></description><category></category></item><item><title><![CDATA[webview创建过程分析（五）]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/89478661</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/89478661</guid><author>andyhxc</author><pubDate>Wed, 24 Apr 2019 16:43:43 +0800</pubDate><description><![CDATA[今天我们来看下WebView的Browser端的启动过程，在前面webview创建过程分析（二）的分析中，我们知道WebViewChromium在init过程中会涉及到Browser端的启动，具体代码为


public void init(final Map&lt;String, Object&gt; javaScriptInterfaces,
            final boolean...]]></description><category></category></item><item><title><![CDATA[webview创建过程分析（四）]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/89467545</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/89467545</guid><author>andyhxc</author><pubDate>Tue, 23 Apr 2019 17:02:22 +0800</pubDate><description><![CDATA[在前面webview创建过程分析（三）中我们了解了AwContents的初始化过程，其中还有一个点也就是native的初始化部分没有将，今天主要来看下AwContents的native是如何实现的。


private static native long nativeInit(AwBrowserContext browserContext);

AwContents会调用nativeInit方法...]]></description><category></category></item><item><title><![CDATA[webview创建过程分析（三）]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/89460620</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/89460620</guid><author>andyhxc</author><pubDate>Mon, 22 Apr 2019 21:53:02 +0800</pubDate><description><![CDATA[在前面的webview创建过程分析（二）中我们分析了WebViewChromium的创建过程，在文章的最后我们把AwContents的创建过程先忽略了，在这篇文章里我们将接着前面的内容来分析AwContents的创建过程。先看下AwContents的构造函数代码


public AwContents(AwBrowserContext browserContext, ViewGroup conta...]]></description><category></category></item><item><title><![CDATA[webview创建过程分析（二）]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/89455309</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/89455309</guid><author>andyhxc</author><pubDate>Mon, 22 Apr 2019 18:09:36 +0800</pubDate><description><![CDATA[从前面 webview创建过程分析（一）中我们知道在webview创建过程中会创建WebViewChormiumFactoryProvider和WebViewChromium，今天我们来分析下这两个创建过程的源码。

WebViewChormiumFactoryProvider创建过程


public static WebViewChromiumFactoryProvider create(an...]]></description><category></category></item><item><title><![CDATA[webview创建过程分析（一）]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/89453359</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/89453359</guid><author>andyhxc</author><pubDate>Mon, 22 Apr 2019 16:29:04 +0800</pubDate><description><![CDATA[我们知道在使用webview的时候需要先创建一个weview，即


WebView webView = new WebView(context)

今天我们通过源码来分析这个WebView的创建过程。当我们使用上面的代码创建webview之后，会调用到下面WebView的构造方法中，这里除了context参数之后其他的都是默认值


protected WebView(Context conte...]]></description><category></category></item><item><title><![CDATA[webview框架学习]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/89452985</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/89452985</guid><author>andyhxc</author><pubDate>Mon, 22 Apr 2019 15:46:02 +0800</pubDate><description><![CDATA[在之前的工作中跟webview这块接触的比较多，对webview的一些用法以及一些优化手段都有了一定的了解。但是webview整个框架的运行机制却不是很了解，感觉是时候需要了解下webview的整个运行原理了。

网上介绍webview原理的文章很多，有些介绍的也是很详细，但是每当自己看这些文章的时候都会有一些懵的感觉。我自己也在思考为什么看这些文章会有懵的感觉，我想了很久感觉应该是自己的知识储备...]]></description><category></category></item><item><title><![CDATA[java中equals 和 == 的区别]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/48650447</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/48650447</guid><author>andyhxc</author><pubDate>Tue, 22 Sep 2015 10:17:18 +0800</pubDate><description><![CDATA[在java中，== 用来表示变量之间存贮的值是否相等。
我们知道，在java中，变量有基本数据类型和复杂数据类型(对象)的变量。其中基本数据类型变量里存贮的就是变量的值，而复杂数据类型变量中存贮的是其引用的对象在内存中存放的地址。换句话说，就是 == 在比较基本数据类型，是比较这两个值是否相等，比如：int a = 10； int  b = 10；int c = 5 则 a == b 为true]]></description><category></category></item><item><title><![CDATA[java 引用、对象]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/48624757</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/48624757</guid><author>andyhxc</author><pubDate>Mon, 21 Sep 2015 12:22:23 +0800</pubDate><description><![CDATA[在java中有一个比较容易混淆的概念就是关于对象和对象的引用。在这里就谈谈本人自己对这部分内容的理解。
首先来看下一中最常见的java创建对象的方式：Person zhangsan = new Person();，这里的Person 是自己定义个一个类。
上面的一行语句可以分为3部分理解：
  1，等号的右边，也就是 new Person();这里通过new关键字创建了一个Person类的对]]></description><category></category></item><item><title><![CDATA[ColorDrawable 不起作用]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/48526915</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/48526915</guid><author>andyhxc</author><pubDate>Thu, 17 Sep 2015 19:54:30 +0800</pubDate><description><![CDATA[前几天在做项目的时候发现一个问题，就是new了一个ColorDrawable，设置了色值，但是一直看不到效果。先把代码贴一下吧
public class MainActivity extends Activity {

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreat]]></description><category></category></item><item><title><![CDATA[android 线程池的源码分析]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/47107961</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/47107961</guid><author>andyhxc</author><pubDate>Tue, 28 Jul 2015 16:56:18 +0800</pubDate><description><![CDATA[我们进行android开发的过程中，很多情况下都会使用到线程，例如我们会新开线程去下载图片，读取本地的文件操作等。如果每次我们都是新开线程去处理，就会导致资源的消耗过多，因为毕竟没new一个线程是会消耗一定的资源的。为了有效的解决过多线程带来的问题，android也是利用了java的线程池原理。之前也只是知道线程池可以复用已有线程的资源，只是知道会用线程池，但是不知道线程池实现的基本原理。于是利用]]></description><category></category></item><item><title><![CDATA[android paint的抗锯齿效果]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/46866907</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/46866907</guid><author>andyhxc</author><pubDate>Mon, 13 Jul 2015 19:46:31 +0800</pubDate><description><![CDATA[前几天在做公司需求的时候用到自定义textview的功能。主要是判断textview在显示完文字之后还有没有足够的空间用来显示一些图片和其他的文字，这里其他的文字是使用cavans.drawtext函数直接draw在textview上的。
功能完成之后看了下效果，发现用textview设置的字体跟draw出来的字体有些不同，

上面的是用textview直接设置的字体，下面是用draw显示的]]></description><category></category></item><item><title><![CDATA[设计模式之UML类图简介]]></title><link>https://blog.youkuaiyun.com/andyhxc/article/details/46803655</link><guid>https://blog.youkuaiyun.com/andyhxc/article/details/46803655</guid><author>andyhxc</author><pubDate>Wed, 08 Jul 2015 15:06:45 +0800</pubDate><description><![CDATA[由于最近想学习下设计模式的相关知识，于是想通过记录的方式来整理下自己所学的相关知识。
由于设计模式中经常使用到类图来表示类与类之间的关系，因此在学习具体的设计模式知识之前，也了解下UML类图的相关知识。
一、UML(unified modeling language)又称统一建模语言或标准建模语言。类的UML表示为







其中，第一行表示类名，抽象类是用斜体表示
第二]]></description><category></category></item></channel></rss>