<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hanguohui3的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hanguohui3</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hanguohui3]]></copyright><item><title><![CDATA[hello]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/82191940</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/82191940</guid><author>hanguohui3</author><pubDate>Wed, 29 Aug 2018 20:13:21 +0800</pubDate><description><![CDATA[上篇博客我们说到SurfaceControl会调用openTransaction和closeTransaction来一起讲所有SurfaceControl的属性等传给SurfaceFlinger。我们来看下这个过程。

一、SurfaceControl 
我们先来看下SurfaceControl.java中的相关函数，都是调用了JNI函数。

public static void openTran...]]></description><category></category></item><item><title><![CDATA[经过两年的时间]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/82191758</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/82191758</guid><author>hanguohui3</author><pubDate>Wed, 29 Aug 2018 20:09:32 +0800</pubDate><description><![CDATA[上篇博客我们说到SurfaceControl会调用openTransaction和closeTransaction来一起讲所有SurfaceControl的属性等传给SurfaceFlinger。我们来看下这个过程。

一、SurfaceControl

我们先来看下SurfaceControl.java中的相关函数，都是调用了JNI函数。



 


	public static void o...]]></description><category></category></item><item><title><![CDATA[Android异步处理二：使用AsyncTask异步更新UI界面]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/17374455</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/17374455</guid><author>hanguohui3</author><pubDate>Tue, 17 Dec 2013 12:42:13 +0800</pubDate><description><![CDATA[转载自http://blog.youkuaiyun.com/mylzc/article/details/6772129




在《Android异步处理一：使用Thread+Handler实现非UI线程更新UI界面》中，我们使用Thread+Handler的方式实现了异步更新UI界面，这一篇中，我们介绍一种更为简洁的实现方式：使用AsyncTask异步更新UI界面。

概述： AsyncTas]]></description><category></category></item><item><title><![CDATA[Android应用自动更新功能实现使用AsyncTask!]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/17374211</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/17374211</guid><author>hanguohui3</author><pubDate>Tue, 17 Dec 2013 12:26:14 +0800</pubDate><description><![CDATA[转载自http://my.oschina.net/banxi/blog/57988

其实这个自动更新功能大体就是两个三个步骤:

   (1)检查更新

   (2)下载更新

  (3)安装更新  

    检查更新和下载更新其实可以算是一步.因为都比较简单,都是主要是下载.

    1) 当你有新的版本发布时,在一个位置放一个更新的文件.

里面到少放有最新应]]></description><category></category></item><item><title><![CDATA[Android应用自动更新功能的实现！！！]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/17374169</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/17374169</guid><author>hanguohui3</author><pubDate>Tue, 17 Dec 2013 12:14:29 +0800</pubDate><description><![CDATA[转载出自http://blog.youkuaiyun.com/android_tutor/article/details/7015986


大家好，发现半年没有更新博客了，最近一直都比较忙，决定在凌晨 英超 阿森纳VS富勒姆 中场休息的时候，给大家分享Android里应用版本更新功能这一块的实现。

一个好的应用软件都是需要好的维护，从初出版本到最后精品，这个过程需要版本不停的更新，那么如何让用户]]></description><category></category></item><item><title><![CDATA[android 线程池]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/15025861</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/15025861</guid><author>hanguohui3</author><pubDate>Sun, 10 Nov 2013 08:23:00 +0800</pubDate><description><![CDATA[为什么要用线程池，当我们需要在一个listview,gridview等容器中作很耗时的操作，不可能再一个一个的建立子线程去获取，因为线程的创建和销毁是一个很耗资源的工作，因此我们引入线程池的概念，引入线程池后，当一个子线程操作完后，不会马上销毁，如果这个线程池里还有空间，就把这个线程放入这个池里，当再需要线程的时候，会优先从这个池里去取，不需要再创建线程了，这样就节省了很多资源的浪费。话不多说，马]]></description><category></category></item><item><title><![CDATA[一个简单的json服务端和客户端的例子]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/14543375</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/14543375</guid><author>hanguohui3</author><pubDate>Fri, 08 Nov 2013 20:46:32 +0800</pubDate><description><![CDATA[我们经常用json来从服务端返回数据给客户端，我写了一个很简单的demo
服务端：

public class JsonAction extends HttpServlet {

	JsonService jsonService;
	/**
	 * Constructor of the object.
	 */
	public JsonAction() {
		super();
	}

	/]]></description><category></category></item><item><title><![CDATA[LoaderManager的原理和示例]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/14451889</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/14451889</guid><author>hanguohui3</author><pubDate>Thu, 07 Nov 2013 15:25:40 +0800</pubDate><description><![CDATA[LoaderManager是对异步查询的一种封装，常用于对cursor的操作，我们知道，cursor查询时比较耗时的，如果cursor在主线程上去做查询，就阻塞主线程，我们考虑异步操作，android提供LoaderManager,它有个接口LoaderCallbacks，里面有三个回调方法，其中onCreateLoader是在子线程中运行，主要做查询使用，onLoadFinished处理onCr]]></description><category></category></item><item><title><![CDATA[从网络上获取图片的两种方式讲解：thread+handle和AsyncTask方式]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/14449005</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/14449005</guid><author>hanguohui3</author><pubDate>Thu, 07 Nov 2013 12:43:00 +0800</pubDate><description><![CDATA[从网络上获取图片是一个比较耗时的操作，放在主线程会导致阻塞主线程，响应超时，所以我们不能把它放在主线程里操作，必须放在一个子线程里，我打算采用两种方式去实现。1、采用thread去获取图片，获取到后通过handle把消息发送到与主线程绑定的消息队列中（也就是主线程的loop）。2、采用AsyncTask方式，也称异步任务，这个类其实把子线程和handle的处理方式进行了封装，建议开发者多用异步任务]]></description><category></category></item><item><title><![CDATA[ContentProvider的用法]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/14445821</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/14445821</guid><author>hanguohui3</author><pubDate>Thu, 07 Nov 2013 09:37:44 +0800</pubDate><description><![CDATA[ContentProvider的出现解决了跨进程访问数据的问题，其内部的原理主要是BINDER和匿名共享内存来实现的，它主要是由ActivitymanagerService提供管理，我们知道建立一个数据库只能由本应用访问，其他应用访问不了的，但是我们我们用contentprovider去包装数据库就可以通过uri去访问了。现在介绍一下怎么建立一个contentprovider。
     首先我]]></description><category></category></item><item><title><![CDATA[DialogFragment的用法实例]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/14445127</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/14445127</guid><author>hanguohui3</author><pubDate>Thu, 07 Nov 2013 08:04:45 +0800</pubDate><description><![CDATA[DialogFragment，顾名思义，是一个显示dialog窗口的fragment。外表和对话框没什么区别，我们一般在android4.0以后建议用DialogFragment来替代AlertDialog。DialogFragment比AlertDialog有很多优点，比如说，它是独立的，有自己的window,接受自己的输入事件。
public static class MyAlertDial]]></description><category></category></item><item><title><![CDATA[基于google Zxing实现二维码、条形码扫描，仿微信二维码扫描效果]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/11841397</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/11841397</guid><author>hanguohui3</author><pubDate>Fri, 20 Sep 2013 09:29:51 +0800</pubDate><description><![CDATA[了解二维码这个东西还是从微信中，当时微信推出二维码扫描功能，自己感觉挺新颖的，从一张图片中扫一下竟然能直接加好友，不可思议啊，那时候还不了解二维码，呵呵，然后做项目的时候，老板说要加上二维码扫描功能，然后自己的屁颠屁颠的去百度，google啥的，发现很多朋友都有介绍二维码扫描的功能，然后我就跟着人家的介绍自己搞起了二维码扫描功能，跟着人家的帖子，很快我的项目就加入了扫描二维码的功能，然后自己还很开]]></description><category></category></item><item><title><![CDATA[异步加载图片，使用LruCache和SD卡或手机缓存，效果非常的流畅]]></title><link>https://blog.youkuaiyun.com/hanguohui3/article/details/11831323</link><guid>https://blog.youkuaiyun.com/hanguohui3/article/details/11831323</guid><author>hanguohui3</author><pubDate>Thu, 19 Sep 2013 15:16:21 +0800</pubDate><description><![CDATA[异步加载图片的例子，网上也比较多，大部分用了HashMap> imageCache ，但是现在已经不再推荐使用这种方式了，因为从 Android 2.3 (API Level 9)开始，垃圾回收器会更倾向于回收持有软引用或弱引用的对象，这让软引用和弱引用变得不再可靠。另外，Android 3.0 (API Level 11)中，图片的数据会存储在本地的内存当中，因而无法用一种可预见的方式将其释放，]]></description><category></category></item></channel></rss>