<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Luckcat]]></title><description><![CDATA[学无止境]]></description><link>https://blog.youkuaiyun.com/u010784887</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010784887]]></copyright><item><title><![CDATA[Android 性能优化(三)----ANR]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/108161096</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/108161096</guid><author>u010784887</author><pubDate>Fri, 21 Aug 2020 23:28:58 +0800</pubDate><description><![CDATA[一 .  什么是ANR？
ANR(Application Not responding)， 应用程序无响应；主线程如果在规定时内没有处理完相应工作，就会出现ANR。# 系列文章目录
二 . ANR 产生的原因？
只有UI线程阻塞才会发生ANR，发生ANR的根本原因有以下三种：

KeyDispatchTimeOut ：
View的按键事件或者触摸事件在特定的时间（5秒）内无法得到响应；
BroadcaseTimeOut：
BroadcastReceiver的onReceiver()函数运行在主线程中，在特定]]></description><category></category></item><item><title><![CDATA[RePlugin源码解析之—插件的安装]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/85491047</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/85491047</guid><author>u010784887</author><pubDate>Mon, 14 Jan 2019 15:30:57 +0800</pubDate><description><![CDATA[这里写自定义目录标题RePlugin插件的安装插件具体的安装流程功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
ReP...]]></description><category></category></item><item><title><![CDATA[【Error】INSTALL_FAILED_CONFLICTING_PROVIDER]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/84307913</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/84307913</guid><author>u010784887</author><pubDate>Tue, 20 Nov 2018 18:51:08 +0800</pubDate><description><![CDATA[Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER
安装App时出现以下错误
adb: failed to install D:\doc\workspace\yw\develop\cooperate-baseline\app\build\outputs\apk\***\debug\myApp-debug.apk: Failure [INS...]]></description><category></category></item><item><title><![CDATA[Android RePlugin 使用及源码分析（1）]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/80713888</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/80713888</guid><author>u010784887</author><pubDate>Sun, 17 Jun 2018 03:15:31 +0800</pubDate><description><![CDATA[1. RePlugin 概述

RePlugin是一套完整的、稳定的、适合全面使用的，占坑类插件化方案。 
具体来说有如下特点： 
完整的：让插件运行起来“像单品那样”，支持大部分特性 
稳定的：如此灵活完整的情况下，其框架崩溃率仅为业内很低的“万分之一” 
适合全面使用的：其目的是让应用内的“所有功能皆为插件” 
占坑类：以稳定为前提的Manifest占坑思路 
插件化方案：基于Android原...]]></description><category></category></item><item><title><![CDATA[Java 多线程同步以及线程之间的协作]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79771562</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79771562</guid><author>u010784887</author><pubDate>Sun, 01 Apr 2018 12:55:37 +0800</pubDate><description><![CDATA[一. 线程状态



Java 线程有下列五种状态:

1. 初始状态(New)  
线程对象被创建后，就进入了初始状态, 此时线程会被分配必须的系统资源, 并进行了初始化操作, 代表该线程有资格获取CPU的时间片了;

2. 就绪状态(Runnable) 
线程对象被创建后，其它线程调用了该线程的start()方法，从而启动该线程; 处于就绪状态的线程，随时可能被CPU调度执行, 也就是说此时线...]]></description><category></category></item><item><title><![CDATA[Android 8.0 App 安装卸载流程]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79566159</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79566159</guid><author>u010784887</author><pubDate>Sun, 25 Mar 2018 18:32:28 +0800</pubDate><description><![CDATA[此文章为了验证Android 8.0 安装,卸载和更新一个应用时广播的接受状态, 主要是更新一个应用时都会接收到那些广播, 先接收到那些广播, 下面就以一个简单的例子来验证这些:

public class PackageInstallReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Cont...]]></description><category></category></item><item><title><![CDATA[AsyncTask 使用详解]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/78883427</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/78883427</guid><author>u010784887</author><pubDate>Sun, 25 Mar 2018 13:14:24 +0800</pubDate><description><![CDATA[一. AsyncTask 是什么

AsyncTask是Android提供的执行异步操作的类，它通过对Thread和Handler进行封装，可以让我们在后台线程中执行耗时操作，然后将结果发送给UI主线程，从而在主线程中进行UI更新等操作。



二. 为什么要引入 AsyncTask

其实在 Android 中我们经常通过 Thread + Handler实现多线程通信，Handler实现异步任...]]></description><category></category></item><item><title><![CDATA[Java ThreadLocal 使用及实现原理]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79680858</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79680858</guid><author>u010784887</author><pubDate>Sat, 24 Mar 2018 21:14:07 +0800</pubDate><description><![CDATA[一. ThreadLocal是什么

ThreadLocal 是线程本地数据存储类，通过ThreadLocal可以在特定的线程中存储数据和变量, 并且这些数据之后只能由该线程访问,其他线程是访问不了的, 保证各个线程里数据和变量的独立性; 即ThreadLocal使每个线程可以访问自己内部的副本变量。

二. 通过例子来了解ThreadLocal

下面通过一个简单的例子来说明ThreadLoca...]]></description><category></category></item><item><title><![CDATA[Android 8.0 启动后台service 出错 IllegalStateException: Not allowed to start service Intent]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79675147</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79675147</guid><author>u010784887</author><pubDate>Sat, 24 Mar 2018 10:00:21 +0800</pubDate><description><![CDATA[出错信息



E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: com.cjl.servicetest, PID: 4455
E AndroidRuntime: java.lang.RuntimeException: Unable to create application com.cjl.servicetest...]]></description><category></category></item><item><title><![CDATA[Ubuntu 解压rar压缩包出错]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79657618</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79657618</guid><author>u010784887</author><pubDate>Thu, 22 Mar 2018 17:56:09 +0800</pubDate><description><![CDATA[
  Ubuntu 解压rar压缩包出错


出错截图：





解决办法：

先卸载rar 
sudo apt-get remove rar  
再安装unrar 
sudo apt-get install unrar]]></description><category></category></item><item><title><![CDATA[Android App 性能优化(二)----内存泄露（Memory Leak）]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79599147</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79599147</guid><author>u010784887</author><pubDate>Sun, 18 Mar 2018 19:12:59 +0800</pubDate><description><![CDATA[App 性能优化系列： 
Android App 性能优化(二)—-内存泄露（Memory Leak） 
Android App 性能优化(一)—-布局优化

一. 什么是内存泄露


  内存泄漏（Memory Leak）是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放，造成系统内存的浪费，导致程序运行速度减慢甚至系统崩溃等严重后果。


当一个对象使已经用完不需要时，这时候应该被回...]]></description><category></category></item><item><title><![CDATA[Gradle's dependency cache may be corrupt]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79599010</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79599010</guid><author>u010784887</author><pubDate>Sun, 18 Mar 2018 11:24:20 +0800</pubDate><description><![CDATA[出错信息

Error:Failed to open zip file. 
Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) 
Re-download dependencies and sync project (requires network)...]]></description><category></category></item><item><title><![CDATA[Android App 性能优化(一)----布局优化]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79597403</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79597403</guid><author>u010784887</author><pubDate>Sun, 18 Mar 2018 10:30:51 +0800</pubDate><description><![CDATA[App 性能优化系列： 
Android App 性能优化(二)—-内存泄露（Memory Leak） 
Android App 性能优化(一)—-布局优化

一. 概述

布局优化在 Android 性能优化中占有举足轻重的作用, 如果布局层次复杂,嵌套过深, 这样的布局就会导致在测量绘制的时候更耗时, 占用更多内存, 很容易就会出现卡顿. 如果布局层次分明合理, 没有冗余View的布局, 不仅...]]></description><category></category></item><item><title><![CDATA[Android 编译源码出错 Could not build FEC data! Error: terminating with uncaught exception]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79533602</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79533602</guid><author>u010784887</author><pubDate>Mon, 12 Mar 2018 21:51:09 +0800</pubDate><description><![CDATA[今天在编译 Android 8.1 源码时出现以下错误, 特此记录一下



出错信息:

Created filesystem with 2968/4224 inodes and 245876/774155 blocks
Running:  build_verity_tree -A aee087a5be3b982978c923f566a94613496b417f2af592639bc80d141...]]></description><category></category></item><item><title><![CDATA[Android 自定义CommitButton]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79517812</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79517812</guid><author>u010784887</author><pubDate>Sun, 11 Mar 2018 16:58:33 +0800</pubDate><description><![CDATA[public class AnimationButton extends View implements View.OnClickListener{

    private Paint mPaint;
    //绘制文字
    private Paint mTextPaint;
    private int mWidth;
    private int mHeight;
    //圆角...]]></description><category></category></item><item><title><![CDATA[【排序算法-5】快速排序法]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79512037</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79512037</guid><author>u010784887</author><pubDate>Sun, 11 Mar 2018 11:36:06 +0800</pubDate><description><![CDATA[一.基本思想


  通过一趟排序将要排序的数据分割成独立的两部分，其中一部分的所有数据都比另外一部分的所有数据都要小，然后再按此方法对这两部分数据分别进行快速排序，整个排序过程可以递归进行，以此达到整个数据变成有序序列,其实快速排序是基于一种叫做“分治”的思想,快速排序法是目前公认的最佳排序法。


具体来说就是在data[]中任选一个记录作为基准(Pivot)，以此基准将当前无序区划分为左、右...]]></description><category></category></item><item><title><![CDATA[Java 并发编程 CountDownLatch 详解]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79417056</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79417056</guid><author>u010784887</author><pubDate>Thu, 01 Mar 2018 20:36:31 +0800</pubDate><description><![CDATA[1. CountDownLatch是什么


  CountDownLatch是在 java1.5 被引入的，存在于java.util.concurrent包下。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。


CountDownLatch是通过一个计数器来实现的，计数器的初始值为线程的数量。每当一个线程完成了自己的任务后，计数器的值就会减1。当计数器值到达...]]></description><category></category></item><item><title><![CDATA[Xposed 简介]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79416423</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79416423</guid><author>u010784887</author><pubDate>Thu, 01 Mar 2018 19:21:03 +0800</pubDate><description><![CDATA[1. 简介


  Xposed框架的原理是替换安卓系统/System/bin目录下的文件，从而实现对系统某些功能的替换，进而给予基于 Xposed 框架开发的App更多权限。


下图是作者rovo89 在github上Xposed工程目录：  
 
从上图可以看出Xposed共有五个部分： 

Xposed：Xposed的C++部分，主要是用来替换/system/bin/app_process...]]></description><category></category></item><item><title><![CDATA[Android 6.0 权限申请源码解析]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79353189</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79353189</guid><author>u010784887</author><pubDate>Wed, 28 Feb 2018 21:53:28 +0800</pubDate><description><![CDATA[这篇文章主要从调用流程上分析一下Android 6.0 权限检查和申请



权限管理涉及到四个基本API：


检查是否有权限 
checkSelfPermission(String)
是否需要提示用户为什么需要这个权限 
shouldShowRequestPermissionRationale (String permission)
请求权限: 
requestPermissions (Str...]]></description><category></category></item><item><title><![CDATA[adb remount 出错 remount of /system failed: Read-only file system]]></title><link>https://blog.youkuaiyun.com/u010784887/article/details/79386324</link><guid>https://blog.youkuaiyun.com/u010784887/article/details/79386324</guid><author>u010784887</author><pubDate>Tue, 27 Feb 2018 11:47:27 +0800</pubDate><description><![CDATA[出错信息：

adb root 没有问题，但执行 adb remount 时出现以下错误：

remount of /system failed: Read-only file system
remount failed



解决办法：

执行如下命令  
1. adb root  
2. adb disable-verity  
3. adb reboot

开机后再执行： 
adb root...]]></description><category></category></item></channel></rss>