- 博客(112)
- 问答 (1)
- 收藏
- 关注
原创 Android 性能优化(三)----ANR
一 . 什么是ANR?ANR(Application Not responding), 应用程序无响应;主线程如果在规定时内没有处理完相应工作,就会出现ANR。# 系列文章目录二 . ANR 产生的原因?只有UI线程阻塞才会发生ANR,发生ANR的根本原因有以下三种:KeyDispatchTimeOut :View的按键事件或者触摸事件在特定的时间(5秒)内无法得到响应;BroadcaseTimeOut:BroadcastReceiver的onReceiver()函数运行在主线程中,在特定
2020-08-21 23:28:58
578
原创 RePlugin源码解析之—插件的安装
这里写自定义目录标题RePlugin插件的安装插件具体的安装流程功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入ReP...
2019-01-14 15:30:57
840
原创 【Error】INSTALL_FAILED_CONFLICTING_PROVIDER
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...
2018-11-20 18:51:08
875
原创 Android RePlugin 使用及源码分析(1)
1. RePlugin 概述RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案。 具体来说有如下特点: 完整的:让插件运行起来“像单品那样”,支持大部分特性 稳定的:如此灵活完整的情况下,其框架崩溃率仅为业内很低的“万分之一” 适合全面使用的:其目的是让应用内的“所有功能皆为插件” 占坑类:以稳定为前提的Manifest占坑思路 插件化方案:基于Android原...
2018-06-17 03:15:31
774
原创 Java 多线程同步以及线程之间的协作
一. 线程状态Java 线程有下列五种状态:1. 初始状态(New) 线程对象被创建后,就进入了初始状态, 此时线程会被分配必须的系统资源, 并进行了初始化操作, 代表该线程有资格获取CPU的时间片了;2. 就绪状态(Runnable) 线程对象被创建后,其它线程调用了该线程的start()方法,从而启动该线程; 处于就绪状态的线程,随时可能被CPU调度执行, 也就是说此时线...
2018-04-01 12:55:37
1698
1
原创 Android 8.0 App 安装卸载流程
此文章为了验证Android 8.0 安装,卸载和更新一个应用时广播的接受状态, 主要是更新一个应用时都会接收到那些广播, 先接收到那些广播, 下面就以一个简单的例子来验证这些:public class PackageInstallReceiver extends BroadcastReceiver { @Override public void onReceive(Cont...
2018-03-25 18:32:28
2975
1
原创 AsyncTask 使用详解
一. AsyncTask 是什么AsyncTask是Android提供的执行异步操作的类,它通过对Thread和Handler进行封装,可以让我们在后台线程中执行耗时操作,然后将结果发送给UI主线程,从而在主线程中进行UI更新等操作。二. 为什么要引入 AsyncTask其实在 Android 中我们经常通过 Thread + Handler实现多线程通信,Handler实现异步任...
2018-03-25 13:14:24
503
原创 Java ThreadLocal 使用及实现原理
一. ThreadLocal是什么ThreadLocal 是线程本地数据存储类,通过ThreadLocal可以在特定的线程中存储数据和变量, 并且这些数据之后只能由该线程访问,其他线程是访问不了的, 保证各个线程里数据和变量的独立性; 即ThreadLocal使每个线程可以访问自己内部的副本变量。二. 通过例子来了解ThreadLocal下面通过一个简单的例子来说明ThreadLoca...
2018-03-24 21:14:07
1295
原创 Android 8.0 启动后台service 出错 IllegalStateException: Not allowed to start service Intent
出错信息E AndroidRuntime: FATAL EXCEPTION: mainE AndroidRuntime: Process: com.cjl.servicetest, PID: 4455E AndroidRuntime: java.lang.RuntimeException: Unable to create application com.cjl.servicetest...
2018-03-24 10:00:21
30859
5
原创 Ubuntu 解压rar压缩包出错
Ubuntu 解压rar压缩包出错出错截图:解决办法:先卸载rar sudo apt-get remove rar 再安装unrar sudo apt-get install unrar
2018-03-22 17:56:09
2570
原创 Android App 性能优化(二)----内存泄露(Memory Leak)
App 性能优化系列: Android App 性能优化(二)—-内存泄露(Memory Leak) Android App 性能优化(一)—-布局优化一. 什么是内存泄露 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。当一个对象使已经用完不需要时,这时候应该被回...
2018-03-18 19:12:59
727
原创 Gradle's dependency cache may be corrupt
出错信息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)...
2018-03-18 11:24:20
314
原创 Android App 性能优化(一)----布局优化
App 性能优化系列: Android App 性能优化(二)—-内存泄露(Memory Leak) Android App 性能优化(一)—-布局优化一. 概述布局优化在 Android 性能优化中占有举足轻重的作用, 如果布局层次复杂,嵌套过深, 这样的布局就会导致在测量绘制的时候更耗时, 占用更多内存, 很容易就会出现卡顿. 如果布局层次分明合理, 没有冗余View的布局, 不仅...
2018-03-18 10:30:51
462
原创 Android 编译源码出错 Could not build FEC data! Error: terminating with uncaught exception
今天在编译 Android 8.1 源码时出现以下错误, 特此记录一下出错信息:Created filesystem with 2968/4224 inodes and 245876/774155 blocksRunning: build_verity_tree -A aee087a5be3b982978c923f566a94613496b417f2af592639bc80d141...
2018-03-12 21:51:09
4054
1
原创 Android 自定义CommitButton
public class AnimationButton extends View implements View.OnClickListener{ private Paint mPaint; //绘制文字 private Paint mTextPaint; private int mWidth; private int mHeight; //圆角...
2018-03-11 16:58:33
260
原创 【排序算法-5】快速排序法
一.基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列,其实快速排序是基于一种叫做“分治”的思想,快速排序法是目前公认的最佳排序法。具体来说就是在data[]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右...
2018-03-11 11:36:06
335
原创 Java 并发编程 CountDownLatch 详解
1. CountDownLatch是什么 CountDownLatch是在 java1.5 被引入的,存在于java.util.concurrent包下。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达...
2018-03-01 20:36:31
925
原创 Xposed 简介
1. 简介 Xposed框架的原理是替换安卓系统/System/bin目录下的文件,从而实现对系统某些功能的替换,进而给予基于 Xposed 框架开发的App更多权限。下图是作者rovo89 在github上Xposed工程目录: 从上图可以看出Xposed共有五个部分: Xposed:Xposed的C++部分,主要是用来替换/system/bin/app_process...
2018-03-01 19:21:03
4395
3
原创 Android 6.0 权限申请源码解析
这篇文章主要从调用流程上分析一下Android 6.0 权限检查和申请权限管理涉及到四个基本API:检查是否有权限 checkSelfPermission(String)是否需要提示用户为什么需要这个权限 shouldShowRequestPermissionRationale (String permission)请求权限: requestPermissions (Str...
2018-02-28 21:53:28
2107
原创 adb remount 出错 remount of /system failed: Read-only file system
出错信息:adb root 没有问题,但执行 adb remount 时出现以下错误:remount of /system failed: Read-only file systemremount failed解决办法:执行如下命令 1. adb root 2. adb disable-verity 3. adb reboot开机后再执行: adb root...
2018-02-27 11:47:27
1918
原创 gradle 报错 Error:Unsupported method: BaseConfig.getApplicationIdSuffix()
出错信息:Error:Unsupported method: BaseConfig.getApplicationIdSuffix().The version of Gradle you connect to does not support that method.To resolve the problem you can change/upgrade the target vers...
2018-02-24 16:10:29
4434
原创 Ubuntu ps 命令杀进程
1. ps 显示进程显示进程信息,参数可省略 参数: -aux 以BSD风格显示进程 常用 -efH 以System V风格显示进程 -e , -A 显示所有进程 a 显示终端上所有用户的进程 x 显示无终端进程 u 显示详细信息 f 树状显示...
2018-02-16 18:51:30
2531
原创 常用的RxJava操作符实例
1. from作用:from操作符是把其他类型的对象和数据类型转化成Observable, 转换集合为一个每次发射集合中一个元素的 Observable 对象。 场景: 遍历集合public static void from(){ Observable observable = Observable.from(new String[] {"C++", "Java", "C#",...
2018-02-15 13:22:30
1029
原创 ConstraintLayout 布局属性详解
app:layout_constraintLeft_toLeftOf表示此控件的左边框与某个控件的左边框对齐或者在其右边app:layout_constraintLeft_toRightOf表示此控件的左边框与某个控件的右边框对齐或者在其右边app:layout_constraintRight_toLeftOf表示此控件的右边框与某个控件的左边框对齐或在其左边a...
2018-02-13 11:52:59
899
原创 常用的RxJava操作符实例
1. from作用:from操作符是把其他类型的对象和数据类型转化成Observable, 转换集合为一个每次发射集合中一个元素的 Observable 对象。 场景: 遍历集合public static void from(){ Observable observable = Observable.from(new String[] {"C++", "Java", "C#...
2018-02-13 11:48:32
248
原创 消息提醒---带阴影的圆形小球
自定义的属性<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="RedDotTextView"> <attr name="shadowWidth" format="dimension"
2018-02-13 11:36:26
298
原创 make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127
Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y bison -d -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y /bin...
2018-02-13 11:10:35
2876
原创 Java ArrayList 运行出错 java.lang.UnsupportedOperationException
java.lang.UnsupportedOperationException 意思是你调用的关于的容器的操作是不被允许的。 这个问题在使用 Arrays.asLisvt() 后调用add,remove 等方法时会出现; Arrays.asLisvt() 返回 java.util.ArraysArrayList,而不是ArrayList。ArraysArrayList 和 A
2018-02-04 16:31:54
1889
原创 SwitchButton 的 setChecked 方法触发 onCheckedChanged 监听器的问题
开发时发现每次 setChecked 时会触发onCheckedChanged 监听回调,而有时我们在设置setChecked后不想去自动触发 onCheckedChanged 里的具体操作, 即想屏蔽掉onCheckedChanged; 解决方法 区分是否为人为点击 和 代码setChecked,在监听器中加入一个判断, 代码如下:@Override public
2018-02-04 16:21:51
3771
原创 Android 应用管理总结
Android 应用程序主要由 PackageMangerService 来管理, 包括 apk 安装, 卸载, 以及查询;开机启动—-加载 Apk 等资源 PackageMangerService 会在手机启动的时候扫描手里里所有 apk (包括 jar, aar), apk, jar, aar 本质上都是压缩包, 里面包含了App 运行需要组件和数据. PackageM
2018-02-04 16:10:27
2000
原创 Android 基础图形绘制API详解
Canvas类常用的方法: API 功能 方法 颜色 drawARGB(), drawRGB(), drawColor() 画点 drawPoint(), 画线(多条) drawLine(),drawLines() 矩形(圆角矩形) drawRect(), drawRoundRect() 图片 drawBitmap(),...
2018-02-04 16:03:45
1002
原创 Ubuntu 16.04 开机启动失败 Failed to start Load Kernel Modules
Ubuntu 16.04 开机启动失败 Failed to start Load Kernel Modules:解决:dpkg-reconfigure linux-image-$(uname -r)
2018-01-20 15:13:25
13965
2
原创 git error:RPC failed; result=22, HTTP code = 411
git 提交时,提示错误:RPC failed; result=22, HTTP code = 411错误原因在于:上传的包过大,HTTP的头错误导致的解决办法:打开项目中隐藏的.git文件夹,找到config配置文件,在最后面添加如下配置:[http] postBuffer = 524288000
2018-01-20 15:08:55
526
原创 ScrollView 布局不能撑满全屏的问题
当适配小屏幕手机上高度不够全部显示的时候,往往会使用 ScrollView 包裹最外层布局 LinearLayout,这样就会解决在小屏幕手机上显示不全的问题; 但同时也带来了新的问题, 那就是在大屏幕手机上下面会留白,问题的解决办法是在最外层 布局外包裹一层 ScrollView, 并将中ScrollView 的android:fillViewport 设置为 true;当 ScrollV
2018-01-13 17:58:41
2878
原创 vim 编辑器常用快捷键
移动光标hjkl 上下左右移动 0 移动到行首 $ 当前行的末尾 gg 文件第一行 G 文件最后一行 行号+G 指定行 +o 跳转回之前的位置 +i 返回跳转之前的位置退出 进入正常模式 :q! 不保存退出 :wq 保存后退出删除x 删除当前字符 dw 删除至当前单词末尾 de 删除至当前单词末尾,包括当前字符 d$ 删除至当前行尾
2018-01-06 11:34:54
274
原创 adb命令获取android_id
通过adb命令获取android_idadb shell settings get secure android_id
2017-12-24 08:48:51
12299
原创 通过WindowManager设置全屏浮层
通过WindowManager设置全屏浮层, 做类似于蓝光护眼效果, 简单的记录一下;public static WindowManager.LayoutParams getWindowManagerParams(Context context) { int max = Math.max(width, height);// WindowManager.LayoutP
2017-12-24 08:45:13
6824
1
原创 Android 底部弹出对话框
底部弹出对话框, 下面总结两种平时常用的方式:方式一:private void showBottomSheetDialog() { final BottomSheetDialog dialog=new BottomSheetDialog(this); View dialogView= LayoutInflater.from(this).inflate(R.layou...
2017-11-28 00:32:56
3433
1
原创 Android 四大组件系列之----Service 详解
Android 四大组件系列详解: Android 四大组件之—Activity 详解 Android 四大组件系列之—-Service 详解 Android 四大组件系列之—BroadcastReceiver 详解一. Service简介 Service是Android四大组件之一,Service通常总是称之为“后台服务”,它与Activity很相似,都从Context派生出来...
2017-11-26 12:13:48
648
原创 Android 两个小球转动的进度条
public class CircleProgressBar extends View { private Paint mFirstPaint; private Paint mSecondPaint; private Context mContext; private CircleInfo mFirstCircle; private CircleInfo
2017-11-25 23:23:00
384
空空如也
Android 6.0 如何获取 外置SDCard 的写权限?
2016-12-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人