<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ShaMoFengZhou的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ShaMoFengZhou</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ShaMoFengZhou]]></copyright><item><title><![CDATA[Android缓存处理]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/72593899</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/72593899</guid><author>ShaMoFengZhou</author><pubDate>Sun, 21 May 2017 09:01:05 +0800</pubDate><description><![CDATA[Android缓存：

采用缓存，可以进一步大大缓解数据交互的压力，又能提供一定的离线浏览。下边我简略列举一下缓存管理的适用环境：
1. 提供网络服务的应用
2. 数据更新不需要实时更新，哪怕是3-5分钟的延迟也是可以采用缓存机制。
3. 缓存的过期时间是可以接受的(类似网易的新闻阅读,支持离线离线阅读)
这样所带来的好处：
1. 减小服务器的压力
2. 提高客户端的响应速度(本地]]></description><category></category></item><item><title><![CDATA[Xutils简单介绍]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/72577381</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/72577381</guid><author>ShaMoFengZhou</author><pubDate>Sat, 20 May 2017 15:10:08 +0800</pubDate><description><![CDATA[xUtils3的简单介绍
热度 1已有 42 次阅读2016-10-20 21:18|个人分类:Android知识|系统分类:移动开发|xUtils3


xUtils3的简介
xUtils是基于Afinal开发的目前功能比较完善的一个Android开源框架，最近又发布了xUtil3.0，在增加新功能的同时又提高了框架的性能。
1.xUtils包含了很多实用的android工具； xU]]></description><category></category></item><item><title><![CDATA[Android三种播放视频的方式]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/72571861</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/72571861</guid><author>ShaMoFengZhou</author><pubDate>Sat, 20 May 2017 11:51:57 +0800</pubDate><description><![CDATA[在Android中，我们有三种方式来实现视频的播放：
1、使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri，Type为其MIME类型。
2、使用VideoView来播放。在布局文件中使用VideoView结合MediaController来实现对其控制。
3、使用MediaPlayer类和SurfaceView来实现，这种方式很灵活。


1、调用其自带的]]></description><category></category></item><item><title><![CDATA[Android中怎样防止内存泄漏？]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/72571033</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/72571033</guid><author>ShaMoFengZhou</author><pubDate>Sat, 20 May 2017 10:48:10 +0800</pubDate><description><![CDATA[至少在T-Mobile G1上Android应用在堆上分配的内存大小被限制16MB以内。对于手机来说，这是个不小的内存，但是这仍然远远不能满足一些开发者的需求。但是，即使你不打算使用所有的内存空间，你也应该尽可能地少用内存，从而使得其他应用能够运行而不是被杀掉。因为Android能够在内存中保持的应用越多，那么用户切换应用的速度就会越快。作为我工作的一部分，我在做android应用开发的时候也会陷]]></description><category></category></item><item><title><![CDATA[Android主线程与子线程之间的通信]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/54631504</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/54631504</guid><author>ShaMoFengZhou</author><pubDate>Fri, 20 Jan 2017 15:12:18 +0800</pubDate><description><![CDATA[在Android中主线程与子线的通信往往会使用到Handler，Looper，MessageQueen，Message。首先简单的来介绍下他们在通信之间中的作用，以及相关使用方法。

Handler：相当于消息队列中具体处理消息的工人。可以有多个
Looper：相当于消息队列中的管家。只有1个。
MessageQueen：存放消息的队列。
Message：传递信息的消息体

它就像一]]></description><category></category></item><item><title><![CDATA[Android 更新UI的两种方法——handler和runOnUiThread()]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/54576933</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/54576933</guid><author>ShaMoFengZhou</author><pubDate>Mon, 16 Jan 2017 19:52:15 +0800</pubDate><description><![CDATA[Android 更新UI的两种方法——handler和runOnUiThread()
在Android开发过程中，常需要更新界面的UI。而更新UI是要主线程来更新的，即UI线程更新。如果在主线线程之外的线程中直接更新页面显示常会报错。抛出异常：android.view.ViewRoot$CalledFromWrongThreadException: Only the original threa]]></description><category></category></item><item><title><![CDATA[Android 属性动画（Property Animation） 完全解析]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53928582</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53928582</guid><author>ShaMoFengZhou</author><pubDate>Thu, 29 Dec 2016 15:31:35 +0800</pubDate><description><![CDATA[1、概述
Android提供了几种动画类型：View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单，不过只能支持简单的缩放、平移、旋转、透明度基本的动画，且有一定的局限性。比如：你希望View有一个颜色的切换动画；你希望可以使用3D旋转动画；你希望当动画停止时，View的位置就是当前的位置；这些View]]></description><category></category></item><item><title><![CDATA[android selector全解]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53887629</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53887629</guid><author>ShaMoFengZhou</author><pubDate>Mon, 26 Dec 2016 17:06:08 +0800</pubDate><description><![CDATA[Android中的Selector主要是用来改变ListView和Button控件的默认背景。其使用方法可以按一下步骤来设计:


（以在mylist_view.xml为例）


1.创建mylist_view.xml文件
首先在res目录下新建drawable文件夹，再在新建的drawable文件夹中新建mylist_view.xml，其目录结构为：res/drawable/myl]]></description><category></category></item><item><title><![CDATA[android 广播机制]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53884122</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53884122</guid><author>ShaMoFengZhou</author><pubDate>Mon, 26 Dec 2016 10:30:58 +0800</pubDate><description><![CDATA[1.Android广播机制概述
Android广播分为两个方面：广播发送者和广播接收者，通常情况下，BroadcastReceiver指的就是广播接收者（广播接收器）。广播作为Android组件间的通信方式，可以使用的场景如下：
1.同一app内部的同一组件内的消息通信（单个或多个线程之间）；
2.同一app内部的不同组件之间的消息通信（单个进程）；
3.同一app具有多个进程的不同组件之]]></description><category></category></item><item><title><![CDATA[Android中pendingIntent的深入理解]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53869780</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53869780</guid><author>ShaMoFengZhou</author><pubDate>Sun, 25 Dec 2016 14:39:05 +0800</pubDate><description><![CDATA[pendingIntent字面意义：等待的，未决定的Intent。
要得到一个pendingIntent对象，使用方法类的静态方法 getActivity(Context, int,
 Intent, int),getBroadcast(Context, int, Intent,
 int),getService(Context,
 int, Intent, int)  分别对应着Inte]]></description><category></category></item><item><title><![CDATA[自定义一个Toast（技巧）]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53868498</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53868498</guid><author>ShaMoFengZhou</author><pubDate>Sun, 25 Dec 2016 10:19:53 +0800</pubDate><description><![CDATA[使用下面的代码：
  LayoutInflater inflater = LayoutInflater.from(this);
  View view = inflater.inflate(R.layout.book_reading_seekbar_toast, null);
  TextView chapterNameTV = (TextView) view.findViewById(R.]]></description><category></category></item><item><title><![CDATA[android AsyncTask介绍]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53808459</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53808459</guid><author>ShaMoFengZhou</author><pubDate>Thu, 22 Dec 2016 07:37:29 +0800</pubDate><description><![CDATA[AsyncTask和Handler对比


1 ） AsyncTask实现的原理,和适用的优缺点
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
使用的优点:
l  简单,快捷
l  过程可控
       
使用的缺点]]></description><category></category></item><item><title><![CDATA[android之存储篇_SQLite数据库_让你彻底学会SQLite的使用]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53761645</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53761645</guid><author>ShaMoFengZhou</author><pubDate>Tue, 20 Dec 2016 12:40:43 +0800</pubDate><description><![CDATA[SQLite最大的特点是你可以把各种类型的数据保存到任何字段中，而不用关心字段声明的数据类型是什么。
例如：可以在Integer类型的字段中存放字符串，或者在布尔型字段中存放浮点数，或者在字符型字段中存放日期型值。
 但有一种情况例外：定义为INTEGER PRIMARY KEY的字段只能存储64位整数， 当向这种字段保存除整数以外的数据时，将会产生错误。 
另外， SQLite 在解析CR]]></description><category></category></item><item><title><![CDATA[sqlite详解]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53740311</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53740311</guid><author>ShaMoFengZhou</author><pubDate>Mon, 19 Dec 2016 15:04:29 +0800</pubDate><description><![CDATA[上次我向大家介绍了SQLite的基本信息和使用过程，相信朋友们对SQLite已经有所了解了，那今天呢，我就和大家分享一下在Android中如何使用SQLite。
现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎，在我们为移动设备开发应用程序时，也许就要使用到SQLite来存储我们大量的数据，所以我们就需要掌握移动设备上的SQLite开发技巧。对于Andr]]></description><category></category></item><item><title><![CDATA[android AsyncTask介绍]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53728260</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53728260</guid><author>ShaMoFengZhou</author><pubDate>Sun, 18 Dec 2016 16:25:16 +0800</pubDate><description><![CDATA[AsyncTask和Handler对比
1 ） AsyncTask实现的原理,和适用的优缺点
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
使用的优点:
l  简单,快捷
l  过程可控
       
使用的缺点:
l]]></description><category></category></item><item><title><![CDATA[Android 更新UI的两种方法——handler和runOnUiThread()]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53725374</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53725374</guid><author>ShaMoFengZhou</author><pubDate>Sun, 18 Dec 2016 09:40:57 +0800</pubDate><description><![CDATA[Android 更新UI的两种方法——handler和runOnUiThread()
在Android开发过程中，常需要更新界面的UI。而更新UI是要主线程来更新的，即UI线程更新。如果在主线线程之外的线程中直接更新页面显示常会报错。抛出异常：android.view.ViewRoot$CalledFromWrongThreadException: Only the original threa]]></description><category></category></item><item><title><![CDATA[Android LayoutInflater详解]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53710681</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53710681</guid><author>ShaMoFengZhou</author><pubDate>Sat, 17 Dec 2016 18:27:02 +0800</pubDate><description><![CDATA[在实际开发中LayoutInflater这个类还是非常有用的，它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件，并且实例化；而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。
具体作用：
1、对于一个没有被载入或者想要动态载入的界面，都需要使用Layou]]></description><category></category></item><item><title><![CDATA[详解Android中AsyncTask的使用]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53706202</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53706202</guid><author>ShaMoFengZhou</author><pubDate>Sat, 17 Dec 2016 12:11:40 +0800</pubDate><description><![CDATA[在Android中实现异步任务机制有两种方式，Handler和AsyncTask。
Handler模式需要为每一个任务创建一个新的线程，任务完成后通过Handler实例向UI线程发送消息，完成界面的更新，这种方式对于整个过程的控制比较精细，但也是有缺点的，例如代码相对臃肿，在多个任务同时执行时，不易对线程进行精确的控制。关于Handler的相关知识，前面也有所介绍，不清楚的朋友们可以参照一下。]]></description><category></category></item><item><title><![CDATA[Handler.obtainMessage()]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53706184</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53706184</guid><author>ShaMoFengZhou</author><pubDate>Sat, 17 Dec 2016 12:08:22 +0800</pubDate><description><![CDATA[话说在工作中第一次接触Android 的Handler 的时候，不知道怎么去关注性能。

记得当时这么写的:

Message msg = new Message()
msg.what = xxx;
msg.arg1  = xxx;
msg.arg2  = xxx;
handler.sendMessage(msg);


这样写也没有绝得不好，反正当时项目的功能实现了。(性能上还可以]]></description><category></category></item><item><title><![CDATA[浅谈android中的异步加载一]]></title><link>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53704870</link><guid>https://blog.youkuaiyun.com/ShaMoFengZhou/article/details/53704870</guid><author>ShaMoFengZhou</author><pubDate>Sat, 17 Dec 2016 10:28:56 +0800</pubDate><description><![CDATA[1、为什么需要异步加载。
    因为我们都知道在Android中的是单线程模型，不允许其他的子线程来更新UI，只允许UI线程(主线程更新UI)，否则会多个线程都去更新UI会造成UI的一个混乱有些耗时的操纵(例如网络请求等)，如果直接放到主线程中去请求的话则会造成主线程阻塞，而我们系统有规定的响应时间，当响应的时间超过了了阻塞的时间就会造成"Application
 No Response",]]></description><category></category></item></channel></rss>