<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SeaWaveCwt的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SeaWaveCwt</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SeaWaveCwt]]></copyright><item><title><![CDATA[ThreadLocal]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102465196</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102465196</guid><author>SeaWaveCwt</author><pubDate>Thu, 02 Jul 2020 17:37:31 +0800</pubDate><description><![CDATA[ThreadLocal
Threadlocal而是一个线程内部的存储类，可以在指定线程内存储数据，数据存储以后，只有指定线程可以得到存储数据。
ThreadLocal提供了线程内存储变量的能力，这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。以下为ThreadLocal的使用：
static final ThreadLocal&lt;T...]]></description><category></category></item><item><title><![CDATA[并发编程   Java 三把锁（Synchronized、ReentrantLock、ReadWriteLock）]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102460834</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102460834</guid><author>SeaWaveCwt</author><pubDate>Thu, 02 Jul 2020 10:16:30 +0800</pubDate><description><![CDATA[Lock、ReentrantLock与Synchronized很相似，对对象加锁
Lock接口：
public interface Lock {
    void lock();
    void lockInterruptibly() throws InterruptedException;
    boolean tryLock();
    boolean tryLock(long time...]]></description><category></category></item><item><title><![CDATA[Java类加载机制，你理解了吗？]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/106095552</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/106095552</guid><author>SeaWaveCwt</author><pubDate>Wed, 13 May 2020 12:42:48 +0800</pubDate><description><![CDATA[java文件通过编译器变成了.class文件，接下来类加载器又将这些.class文件加载到JVM中。其中类装载器的作用其实就是类的加载。
类的加载的概念：
其实可以一句话来解释：类的加载指的是将类的.class文件中的二进制数据读入到内存中，将其放在运行时数据区的方法区内，然后在堆区创建一个 java.lang.Class对象，用来封装类在方法区内的数据结构。
类加载的过程

其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中，加载、验证、准备和初始化这四个阶段发生的顺序是确定的.]]></description><category></category></item><item><title><![CDATA[为什么要反射？]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/106073772</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/106073772</guid><author>SeaWaveCwt</author><pubDate>Wed, 13 May 2020 12:27:11 +0800</pubDate><description><![CDATA[这里我不打算像别的答案上来就上代码，给你讲怎么用，是啥是啥，老实说那样比较像培训java程序员的感觉，一点对知识的好奇心都没有，如果是想速成反射的，大家看别的答案吧。
写答案，可能会有默认知识现象，就是有些知识点，我知道，但你不知道，可以评论！这里我试着简单粗暴地解释一波！
&amp;lt;img src="https://pic4.zhimg.com/v2-4face8109e0d52ef5894c41c69e4ec6b_b.jpg" data-rawwidth="652" data-rawheight=]]></description><category></category></item><item><title><![CDATA[Android 多线程]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102470018</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102470018</guid><author>SeaWaveCwt</author><pubDate>Wed, 16 Oct 2019 22:41:40 +0800</pubDate><description><![CDATA[AsyncTask：
AsyncTask的使用：

创建 AsyncTask 子类 &amp; 根据需求实现核心方法

private class MyTask extends AsyncTask&lt;Params, Progress, Result&gt; {

        ....

      // 方法1：onPreExecute（）
      // 作用：执行 线程任务前的操作，...]]></description><category></category></item><item><title><![CDATA[Java集合类]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102594782</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102594782</guid><author>SeaWaveCwt</author><pubDate>Wed, 16 Oct 2019 21:09:04 +0800</pubDate><description><![CDATA[Collection接口是集合类的根接口，没有直接的实现类；Set和List继承了Collection接口；Set中不能包含重复的元素；
List是一个有序的集合，可以包含重复的元素，提供了按索引访问的方式。
Map是Java.util包中的另一个接口，和Collection接口相互独立；
Map包含了key-value对，Map不能有重复的key，但可有相同的value。
Iterator，所有...]]></description><category></category></item><item><title><![CDATA[考核问题]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102558991</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102558991</guid><author>SeaWaveCwt</author><pubDate>Tue, 15 Oct 2019 00:20:35 +0800</pubDate><description><![CDATA[动画开发：
帧动画：将一张张单独的图片进行连续播放，从而在视觉上产生一种动画的效果；有点类似于某些软件制作gif动画的方式
补间动画：补间动画作用的最小元素为View,补间动画的执行并不会真正改变控件的属性值；默认情况下，补间动画的执行速率都是先加速后减速，插值器用来控制动画的执行速率，通过插值器可以修改动画的执行速率。
属性动画：属性动画可以通过直接更改 View 的属性来实现 View 动画。...]]></description><category></category></item><item><title><![CDATA[安卓动画]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102510716</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102510716</guid><author>SeaWaveCwt</author><pubDate>Mon, 14 Oct 2019 23:10:56 +0800</pubDate><description><![CDATA[帧动画:
帧动画要说是三种动画中比较简单的一种了，它是基于一连串的图片完成的，它的原理就是将一张张单独的图片进行连续播放，从而在视觉上产生一种动画的效果；有点类似于某些软件制作gif动画的方式。
补间动画
补间动画又可以分为四种形式:alpha(淡入淡出)、translate(位移)、scale(缩放)、rotate(旋转)。
补间动画的实现，一般会采用xml 文件的形式；代码会更容易书写和阅读，...]]></description><category></category></item><item><title><![CDATA[Activity/Fragment]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/101599782</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/101599782</guid><author>SeaWaveCwt</author><pubDate>Mon, 14 Oct 2019 23:09:57 +0800</pubDate><description><![CDATA[Activity

Activity生命周期：


onCreate(): 创建Activity时调用，设置在该方法中，还以Bundle的形式提供对以前存储的任何状态的访问。
onStart(): Activity变为在屏幕上对用户可见时调用。
onResume(): Activity开始与用户交互时调用(无论是启动还是重新启动一个活动，该方法总是被调用）。
onPause(): Activity...]]></description><category></category></item><item><title><![CDATA[高效布局]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102481652</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102481652</guid><author>SeaWaveCwt</author><pubDate>Fri, 11 Oct 2019 21:21:42 +0800</pubDate><description><![CDATA[布局类型：
LinearLayout（线性布局）：实际开发中比较常用的，主要以水平和垂直的方式来显示界面中的控件
RelativeLayout（相对布局）：相对布局是通过相对定位的方式指定控件位置，即以其它控件或父容器为参照物，摆放控件位置
FrameLayout（帧布局）：Android中最简单的一种布局，该布局为每个加入其中的控件创建一个空白区域（称为一帧，每个控件占据一帧）

...]]></description><category></category></item><item><title><![CDATA[线程状态]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102456068</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102456068</guid><author>SeaWaveCwt</author><pubDate>Wed, 09 Oct 2019 14:24:19 +0800</pubDate><description><![CDATA[初始(NEW)：新创建了一个线程对象，但还没有调用start()方法。


运行(RUNNABLE)：Java线程中将就绪（ready）和运行中（running）两种状态笼统的称为“运行”。
线程对象创建后，其他线程(比如main线程）调用了该对象的start()方法。该状态的线程位于可运行线程池中，等待被线程调度选中，获取CPU的使用权，此时处于就绪状态（ready）。就绪状态的线程在获得C...]]></description><category></category></item><item><title><![CDATA[ContentProvider基本使用]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/101762178</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/101762178</guid><author>SeaWaveCwt</author><pubDate>Tue, 08 Oct 2019 21:50:58 +0800</pubDate><description><![CDATA[1. ContentProvider基本用法：
1、创建自己的数据列表；
2、自定义ContentProvider实现相关的抽象方法；
3、在AndroidManifest中声明provider以及定义相关访问权限；
4 、通过ContentResolver根据URI进行增删改查。
-------------------------ContentProvider是一个抽象类，如果我们需要开发自己的...]]></description><category></category></item><item><title><![CDATA[安卓异步消息处理机制---Handler原理]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102317388</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102317388</guid><author>SeaWaveCwt</author><pubDate>Mon, 07 Oct 2019 18:46:07 +0800</pubDate><description><![CDATA[Handler使用方法：
---------------------Handler.sendMessage()：此时更新UI的操作写在Handler的handleMessage方法中
改方式分为两种：
***新建Handler子类（内部类）：***新创建Handler子类(继承Handler类) &amp; 复写handleMessage（）方法
class Mhandler extends Ha...]]></description><category></category></item><item><title><![CDATA[线程池]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102295506</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102295506</guid><author>SeaWaveCwt</author><pubDate>Mon, 07 Oct 2019 14:30:08 +0800</pubDate><description><![CDATA[线程池的体系结构：
java.util.concurrent.Executor 负责线程的使用和调度的根接口
|–ExecutorService 子接口： 线程池的主要接口
|–ThreadPoolExecutor 线程池的实现类
|–ScheduledExceutorService 子接口： 负责线程的调度
|–ScheduledThreadPoolExecutor : 继承ThreadPool...]]></description><category></category></item><item><title><![CDATA[多线程创建方式]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102293485</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102293485</guid><author>SeaWaveCwt</author><pubDate>Mon, 07 Oct 2019 11:08:11 +0800</pubDate><description><![CDATA[线程创建方式
1. 继承Thread类创建线程类
（1）定义子类继承Thread类，重写run方法，方法体为线程要完成的任务；run()方法称为执行体
（2）创建Thread子类的线程对象；调用线程对象的start()方法启动线程
2. 通过Runnable接口创建线程类
（1）定义子类实现runnable接口，重写该接口的run()方法，方法体为线程的线程执行体
（2）创建Runnable实现类...]]></description><category></category></item><item><title><![CDATA[数据存储]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102163986</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102163986</guid><author>SeaWaveCwt</author><pubDate>Sat, 05 Oct 2019 20:31:19 +0800</pubDate><description><![CDATA[数据存储到SharedPreference：


得到SharedPreference对象：
有三种方法：
------Context类中的getSharedPreferences()方法：共有两个参数，第一个参数指定SharedPreferences文件名称，第二个参数指定操作模式，目前只有MODE_PRIVATE可选，表示只有当前应用程序可操作
-----Activity类中的getPrefe...]]></description><category></category></item><item><title><![CDATA[数据存储--数据库]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102151900</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/102151900</guid><author>SeaWaveCwt</author><pubDate>Sat, 05 Oct 2019 18:09:51 +0800</pubDate><description><![CDATA[数据库语言：
创建新表：
create table tablename(
    column1 type [not null] [primary key] autoincrement,
    column2 type [not null],
....)

数据库创建：
通过SQLiteOpenHelper抽象类来生成，需要建一个类来继承SQLiteOpenHelper，实现他的构造方法和抽象方...]]></description><category></category></item><item><title><![CDATA[Broadcast]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/101388910</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/101388910</guid><author>SeaWaveCwt</author><pubDate>Sun, 29 Sep 2019 20:46:01 +0800</pubDate><description><![CDATA[**
Broadcast
**
Broadcast的分类：*


标准广播：完全异步执行，当发出广播后，广播接收器几乎会在同一时刻接收到广播消息，所以没有先后顺序可言，效率比较高，无法被截断。


有序广播：同步执行，广播发出后，会有一个广播接收器接收广播消息，当这个广播接收器中的逻辑执行完毕后广播才会继续传递；有先后顺序，优先级较高的接收器先收到广播消息并且可以截断正在传递的广播，使得后面的接收...]]></description><category></category></item><item><title><![CDATA[Service]]></title><link>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/101676276</link><guid>https://blog.youkuaiyun.com/SeaWaveCwt/article/details/101676276</guid><author>SeaWaveCwt</author><pubDate>Sun, 29 Sep 2019 19:50:02 +0800</pubDate><description><![CDATA[Service
首先要创建服务，必须创建 Service 的子类，同时重写一些回调方法；
package com.zejian.ipctest.service;
 
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotati...]]></description><category></category></item></channel></rss>