<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[allbule的博客]]></title><description><![CDATA[懒]]></description><link>https://blog.youkuaiyun.com/allbule</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; allbule]]></copyright><item><title><![CDATA[Android实现多线程断点续传下载]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/79584762</link><guid>https://blog.youkuaiyun.com/allbule/article/details/79584762</guid><author>allbule</author><pubDate>Fri, 16 Mar 2018 17:36:38 +0800</pubDate><description><![CDATA[前言

我们常常在开发过程中会遇到下载的功能实现，当我们下载中断时，又不希望下次从头开始继续下载，我们就需要用到断点续传了。



断点续传原理

断点续传是指当下载中断后，再次下载时可以从上次的下载进度继续下载。由此我们可以分析得出实现这个功能，我们需要实时保存下载进度，这样在下次继续下载的时候再把下载进度读取出来，继续下载。我们主要需要解决俩个问题：一、从上次的位置继续下载。二、从上次写入的文...]]></description><category></category></item><item><title><![CDATA[RecyclerView实现上拉加载更多]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/77279427</link><guid>https://blog.youkuaiyun.com/allbule/article/details/77279427</guid><author>allbule</author><pubDate>Wed, 16 Aug 2017 22:10:32 +0800</pubDate><description><![CDATA[RecyclerView的封装以实现下拉加载更多下拉加载更多功能是怎么实现的呢？ 
当实现recyclerview的时候，通常需要实现adapter跟viewholder，首先我们要明白adapter里面各个方法的调用顺序。 
1. 首先调用getItemCount()，作为recyclerview里的item数量 
2. 调用getItemViewType(int position)，该方法返回一]]></description><category></category></item><item><title><![CDATA[android 线程池源码解析]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/76013240</link><guid>https://blog.youkuaiyun.com/allbule/article/details/76013240</guid><author>allbule</author><pubDate>Mon, 24 Jul 2017 11:24:46 +0800</pubDate><description><![CDATA[先从俩个概念说起在源码中我们常常能看到这么俩个变量：ctl，worker。ctlctl是什么呢？ 
ctl在源码里的解释是： 
The main pool control state, ctl, is an atomic integer packing two conceptual fields 
1.workerCount, indicating the effective number of t]]></description><category></category></item><item><title><![CDATA[Android自定义一个倒计时按钮]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/74315580</link><guid>https://blog.youkuaiyun.com/allbule/article/details/74315580</guid><author>allbule</author><pubDate>Tue, 04 Jul 2017 12:33:44 +0800</pubDate><description><![CDATA[android倒计时按钮]]></description><category></category></item><item><title><![CDATA[DexClassLoder解析]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/68941880</link><guid>https://blog.youkuaiyun.com/allbule/article/details/68941880</guid><author>allbule</author><pubDate>Sat, 01 Apr 2017 10:35:32 +0800</pubDate><description><![CDATA[Android类装载器DexClassLoader的简单使用DexClassLoader 可以加载外部的 apk、jar 或 dex文件，在java中，有个概念叫做“类加载器”（ClassLoader），它的作用就是动态的装载Class文件。1. ClassLoader 的基础知识ClassLoader主要对类的请求提供服务，当JVM需要某类时，它根据名称向ClassLoader要求这个类，然后由C]]></description><category></category></item><item><title><![CDATA[BaseDexClassLoder源码]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/68059585</link><guid>https://blog.youkuaiyun.com/allbule/article/details/68059585</guid><author>allbule</author><pubDate>Wed, 29 Mar 2017 09:31:00 +0800</pubDate><description><![CDATA[/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You]]></description><category></category></item><item><title><![CDATA[自定义View知识梳理]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/53761219</link><guid>https://blog.youkuaiyun.com/allbule/article/details/53761219</guid><author>allbule</author><pubDate>Tue, 20 Dec 2016 11:42:03 +0800</pubDate><description><![CDATA[1.自定义View的构造函数调用时机public class MyView extends View {
            public MyView(Context context) {  //在代码中实例化View时调用这个构造函数
        super(context);
    }    public MyView(Context context, AttributeSet at]]></description><category></category></item><item><title><![CDATA[Messenger浅析]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/53462683</link><guid>https://blog.youkuaiyun.com/allbule/article/details/53462683</guid><author>allbule</author><pubDate>Mon, 05 Dec 2016 10:15:16 +0800</pubDate><description><![CDATA[Messenger可以实现在不同进程之间传递Message对象，Messenger底层基于AIDL，并且一次处理一个请求，因此不需要考虑线程同步问题。服务端：public class MessengerService extends Service {    private final static int FROM_Client=1;    private static class Messeng]]></description><category></category></item><item><title><![CDATA[android动态加载]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/53456920</link><guid>https://blog.youkuaiyun.com/allbule/article/details/53456920</guid><author>allbule</author><pubDate>Sun, 04 Dec 2016 21:58:13 +0800</pubDate><description><![CDATA[android插件化必须要解决的三个问题：资源访问、Activity生命周期的管理和ClassLoader的管理。 
android中对资源的访问都是通过Resources这个类来实现的。可以认为，所有涉及到获取资源的地方，都可以使用Resources来获取。 
通过AssetManger的addAssetPath这个方法，我们可以指定要加载的资源路径。由于addAssetPath这个方法被隐藏了，]]></description><category></category></item><item><title><![CDATA[Java之反射]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/53233640</link><guid>https://blog.youkuaiyun.com/allbule/article/details/53233640</guid><author>allbule</author><pubDate>Sat, 19 Nov 2016 19:45:26 +0800</pubDate><description><![CDATA[Class类每一个类都对应着一个Class类，它是由Java虚拟机生成的，这个类保存着Java运行时类型信息（虚拟机利用运行时类型信息执行相应的方法）。 
简而言之就是：每个类都有一个Class对象，这个Class对象有Java虚拟机生成，这个Class对象保存着该类的运行时信息(比如域，方法，等等)。通过这个Class类我们可以访问这些信息如何获取Class实例俩种方法： 
一、通过getClas]]></description><category></category></item><item><title><![CDATA[再谈RecyclerView]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/53027494</link><guid>https://blog.youkuaiyun.com/allbule/article/details/53027494</guid><author>allbule</author><pubDate>Thu, 03 Nov 2016 22:49:17 +0800</pubDate><description><![CDATA[上次写了一篇recyclerview的简单使用方法：http://blog.youkuaiyun.com/allbule/article/details/52589397这次想来再谈谈recyclerview，当我们想要实现在同一个recyclerview里面出现不同的Item项，我们该如何定制一个recyclerview。定制recyclerview 涉及到俩个类，一个是RecyclerView.Adapte]]></description><category></category></item><item><title><![CDATA[新闻类客户端代码阅读笔记]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52927640</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52927640</guid><author>allbule</author><pubDate>Tue, 25 Oct 2016 21:45:25 +0800</pubDate><description><![CDATA[ButterKnife这个开源库可以让我们从大量的findViewById()和setonclicktListener()解放出来@Bind(R.id.toolbar) Toolbar toolbar;
//相当于 Toolbar toolbar=（Toolbar） findViewById（R.id.toolbar）@Bind({R.id.tab_news, R.id.tab_pictures,]]></description><category></category></item><item><title><![CDATA[回调接口实现Activity与Fragment之间的通信]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52892596</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52892596</guid><author>allbule</author><pubDate>Sat, 22 Oct 2016 15:35:53 +0800</pubDate><description><![CDATA[话不多说直接贴出代码：//MainActivity
public class MainActivity extends AppCompatActivity implements MyFragment.CallBacks{public void doSomething(){    }...}public class MyFragment extends Fragment{private CallBac]]></description><category></category></item><item><title><![CDATA[inflate中三个参数的含义]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52880889</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52880889</guid><author>allbule</author><pubDate>Fri, 21 Oct 2016 10:44:25 +0800</pubDate><description><![CDATA[inflate三个参数如下：public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)第一个参数是指定要加入父布局的布局文件，第二个参数是视图的父视图，第三个告知布局生成器是否将生成的视图添加给父视图。什么是将生成的视图添加给父视图呢？举个例子，比如在activity中已经加]]></description><category></category></item><item><title><![CDATA[android数据解析之Json]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52836639</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52836639</guid><author>allbule</author><pubDate>Mon, 17 Oct 2016 10:30:12 +0800</pubDate><description><![CDATA[Json解析相比pull有解析快，操作简单的特点。使用Json前我们先来了解Json。Pull解析可以看这篇：http://blog.youkuaiyun.com/allbule/article/details/52832422Json数组数组以“［］”包括，数据的对象用逗号隔开。像这样：               [{
                "name":"JSON",]]></description><category></category></item><item><title><![CDATA[XML解析之Pull解析方式]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52832422</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52832422</guid><author>allbule</author><pubDate>Sun, 16 Oct 2016 19:52:00 +0800</pubDate><description><![CDATA[XML文件：<apps>
    <app>
        <id>1</id>
        <name>gogle</name>
        <version>1.0</version>
    </app>
    <app>
        <id>2</id>
        <name>Chrome</name>
        <version>2.0</version>]]></description><category></category></item><item><title><![CDATA[SearchView提交搜索后收起键盘及SearchView视图]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52808277</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52808277</guid><author>allbule</author><pubDate>Thu, 13 Oct 2016 17:04:16 +0800</pubDate><description><![CDATA[前几天做SearchView时，想要搜索提交后就收起键盘及SearchView视图，找了找资料，可以这么做：@Override
public boolean onQueryTextSubmit(String query) {
            ...
        updateItems();
        searchView.setQuery("", false);
        s]]></description><category></category></item><item><title><![CDATA[MySQL入门篇（二）数据库的基本操作]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52801259</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52801259</guid><author>allbule</author><pubDate>Wed, 12 Oct 2016 22:10:52 +0800</pubDate><description><![CDATA[数据表的基本操作创建数据表以下为创建MySQL数据表的SQL通用语法：CREATE TABLE table_name (column_name column_type);验证数据表是否成功，可以用SHOW TABLES 语句查看。查看数据表1.使用 SHOW CREATE TABLE 查看数据表 
SHOW CREATE TABLE不仅可以查看建表语句，还可以看表的字符编码。 
格式：SHOW CR]]></description><category></category></item><item><title><![CDATA[MySQL入门篇（一）]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52800116</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52800116</guid><author>allbule</author><pubDate>Wed, 12 Oct 2016 20:40:02 +0800</pubDate><description><![CDATA[创建和查看数据库语句：创建一个数据库： 
CREATE DATABASE 数据库名；查看数据库： 
SHOW DATABASES；查看创建好的数据库信息： 
SHOW CREATE DATABASE 数据库名；改变数据库编码： 
ALTER 数据库名 CHARACTER SET 编码 COLLATE 编码方式_bin；删除数据库： 
DROP DATABASE 数据库名； 
数据类型整数类型
数据类]]></description><category></category></item><item><title><![CDATA[全局获取Context的技巧]]></title><link>https://blog.youkuaiyun.com/allbule/article/details/52782769</link><guid>https://blog.youkuaiyun.com/allbule/article/details/52782769</guid><author>allbule</author><pubDate>Mon, 10 Oct 2016 22:50:07 +0800</pubDate><description><![CDATA[获取Context的技巧]]></description><category></category></item></channel></rss>