<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[youfat的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/MrRaoK</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MrRaoK]]></copyright><item><title><![CDATA[android handler (2)]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/108256588</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/108256588</guid><author>MrRaoK</author><pubDate>Thu, 27 Aug 2020 11:38:47 +0800</pubDate><description><![CDATA[享元模式
主要用于减少创建对象的数量,以减少内存占用和提高性能。

private static Message sPool;
private static int sPoolSize = 0;

private static final int MAX_POOL_SIZE = 50;

public static Message obtain() {
    synchronized (sPoolSync) {
        if (sPool != null) {
            Messag]]></description><category></category></item><item><title><![CDATA[android线程相关]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/108221880</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/108221880</guid><author>MrRaoK</author><pubDate>Tue, 25 Aug 2020 15:19:56 +0800</pubDate><description><![CDATA[线程
cpu调度的最小单位
进程
进程是程序运行资源分配的最小单位
并发和并行
并行：同一时间能够执行不同任务，4核cpu有四个线程，并行数量就是4，如果超频，并行数量位8
并发： 单位时间内能执行多少不同任务
启动线程的方式
1
Thread thread = new Thread(){
   @Override
   public void run() {
      
   }
};
thread.start();

2
Runnable runnable = new Runnable() {
   ]]></description><category></category></item><item><title><![CDATA[android handler源码解析]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/108196648</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/108196648</guid><author>MrRaoK</author><pubDate>Mon, 24 Aug 2020 11:54:59 +0800</pubDate><description><![CDATA[handler通信是一个内存共享的方案
Handler
public class Handler {
    
    public Handler(@Nullable Callback callback, boolean async) {
        // 拿到Looper里ThreadLocal储存的Looper对象
        mLooper = Looper.myLooper();
    }
    
}


public final class Looper {
    static f]]></description><category></category></item><item><title><![CDATA[Android Studio调试技巧]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/101152349</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/101152349</guid><author>MrRaoK</author><pubDate>Sun, 22 Sep 2019 12:09:18 +0800</pubDate><description><![CDATA[1、随时进入调试模式：
菜单----Build---- Attach to Android Process

2、条件断点
右键断点，对断点添加条件，满足的时候才会进入断点

3、日志断点：
断点处右键，取消选中Suspend，勾选Log evaluated Expression，在输入框中输入要答应的内容即

4、分析传入和传出的数据流：
Menu----Analyze----Analyze D...]]></description><category></category></item><item><title><![CDATA[android aop方式动态权限]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/82992678</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/82992678</guid><author>MrRaoK</author><pubDate>Wed, 10 Oct 2018 10:10:19 +0800</pubDate><description><![CDATA[注解类：

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckPermission {
    String value();
    int reqCode();
}

切点：

@Aspect
public class PermissionAspectj {

    p...]]></description><category></category></item><item><title><![CDATA[ios开发基础1]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/81988499</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/81988499</guid><author>MrRaoK</author><pubDate>Thu, 23 Aug 2018 21:36:37 +0800</pubDate><description><![CDATA[代码创建Label和Button




- (void)viewDidLoad {
    [super viewDidLoad];

    // label
    CGRect screen = [[UIScreen mainScreen]bounds];
    CGFloat labelWidth = 90;
    CGFloat labelHeight = 50;
    CGFl...]]></description><category></category></item><item><title><![CDATA[Android Room基本使用方法]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/81610983</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/81610983</guid><author>MrRaoK</author><pubDate>Sun, 12 Aug 2018 21:32:05 +0800</pubDate><description><![CDATA[添加依赖



implementation &quot;android.arch.persistence.room:runtime:1.1.1&quot;
annotationProcessor &quot;android.arch.persistence.room:compiler:1.1.1&quot;




entity实体类



@Entity(tableName = &quot;bill&quot;)
public class Bill {...]]></description><category></category></item><item><title><![CDATA[Android 触摸事件传递]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/81604334</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/81604334</guid><author>MrRaoK</author><pubDate>Sun, 12 Aug 2018 10:49:12 +0800</pubDate><description><![CDATA[事件传递的三个阶段



分发（dispatchTouchEvent）


返回true表示事件被当前视图消费掉了，不在分发；
surper.dispatchTouchEvent表示继续分发该事件；
viewGroup及其子类时会调用onInterceptTouchEvent来判断是否拦截该事件




拦截（onInterceptTouchEvent）


只存在 viewGroup及其子类
返...]]></description><category></category></item><item><title><![CDATA[Android  EditText相关]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/81604235</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/81604235</guid><author>MrRaoK</author><pubDate>Sun, 12 Aug 2018 10:44:21 +0800</pubDate><description><![CDATA[动态设置hint字体大小



 // 动态设置hint字体大小
        SpannableString spannableString = new SpannableString(getResources().getString(R.string.hint_withdraw_100));
        AbsoluteSizeSpan absoluteSizeSpan = new Ab...]]></description><category></category></item><item><title><![CDATA[Android6.0 动态权限管理]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/79058784</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/79058784</guid><author>MrRaoK</author><pubDate>Sun, 14 Jan 2018 20:11:30 +0800</pubDate><description><![CDATA[Android6.0之后，官方将权限分为普通权限和危险权限，危险权限血需要动态设置

#### 危险权限


CAMERA
READ_CALENDAR、WRITE_CALENDAR
READ_CONTACTS、WRITE_CONTACTS、GET_ACCOUNTS
ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION
READ_AUDIO
READ_PHTONE_]]></description><category></category></item><item><title><![CDATA[Android 点击穿透]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/78059578</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/78059578</guid><author>MrRaoK</author><pubDate>Fri, 22 Sep 2017 09:45:08 +0800</pubDate><description><![CDATA[对最上层视图控件添加点击事件：  vNullData.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return true;]]></description><category></category></item><item><title><![CDATA[Android 调用系统相机拍照]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/78045648</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/78045648</guid><author>MrRaoK</author><pubDate>Wed, 20 Sep 2017 21:19:38 +0800</pubDate><description><![CDATA[/**
     * 调用系统相机
     */
    private void takePhoto() {
        Uri uri = null;
        if (which_image == FRONT_IMAGE) {
            frontFile = new File(getSDPath() +"/test/front_" + getDate() + ".j]]></description><category></category></item><item><title><![CDATA[设置tablayout tab]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/78034867</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/78034867</guid><author>MrRaoK</author><pubDate>Tue, 19 Sep 2017 21:33:19 +0800</pubDate><description><![CDATA[/**
     * 利用反射设置tablayout下划线
     *
     * @param tabs
     * @param leftDip
     * @param rightDip
     */
    public void setIndicator(TabLayout tabs, int leftDip, int rightDip) {
        Class<?> t]]></description><category></category></item><item><title><![CDATA[gson解析对象数组]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/78024295</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/78024295</guid><author>MrRaoK</author><pubDate>Mon, 18 Sep 2017 21:58:39 +0800</pubDate><description><![CDATA[gson 解析对象数组 public static <T> ArrayList<T> jsonToArrayList(String json, Class<T> clazz) {        Type type = new TypeToken<ArrayList<JsonObject>>() {
        }.getType();
        ArrayList<JsonObject>]]></description><category></category></item><item><title><![CDATA[代码设置drawable padding]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/70961513</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/70961513</guid><author>MrRaoK</author><pubDate>Sat, 29 Apr 2017 16:37:14 +0800</pubDate><description><![CDATA[在代码中设置drawable padding的方法： Drawable drawable= getResources().getDrawable(R.drawable.drawable);
tvTest.setCompoundDrawables(drawable,null,null,null);    这种设置方法是不会显示的。关键代码：drawable.setBounds(0, 0, drawab]]></description><category></category></item><item><title><![CDATA[Android监听网络状态变化]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/70443645</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/70443645</guid><author>MrRaoK</author><pubDate>Sat, 22 Apr 2017 15:22:13 +0800</pubDate><description><![CDATA[监听网络状态变化android可以通过监听广播来监听网络状态的变化，在手机网络发生变化时，系统会发送一个广播。下面是实现步骤：
1.    给清单文件添加权限<!-- 获取手机网络权限-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取网络状态改变 -->
<uses-permission android]]></description><category></category></item><item><title><![CDATA[android实现开机自启动]]></title><link>https://blog.youkuaiyun.com/MrRaoK/article/details/70184883</link><guid>https://blog.youkuaiyun.com/MrRaoK/article/details/70184883</guid><author>MrRaoK</author><pubDate>Sat, 15 Apr 2017 15:44:55 +0800</pubDate><description><![CDATA[欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来，用它写博客，将会带来全新的体验哦：
Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和图片上传
LaTex数学公式
UML序列图和流程图
离线写博客
导入导出Markdown文件
丰富的快捷键
快捷键
加粗    Ctrl + B 
斜体    Ctrl + I 
引用    Ctrl]]></description><category></category></item></channel></rss>