自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 收藏
  • 关注

原创 Android 如何通过代码发送KeyEvent事件

使用InputManager的injectInputEvent方法完成发送Keyevent事件。

2022-09-26 11:32:24 2322 3

原创 Zsh常用插件整理

Zsh(Z-shell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用。其包含了 bash,ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多自身特色。Oh-My-ZshOh My Zsh 是一个令人愉快的、开源的、社区驱动的框架,用于管理您的 Zsh 配置。它捆绑了数千个有用的功能、助手、插件、主题等。配置Zsh 插件推荐几个比较使用的插件。这个插件可以识别的shell命令并高亮显示,效果如下:安装:zsh-autosuggestions自动

2022-06-14 09:29:44 6655

原创 Android 抓heap的几种方式

方式1:通过AndroidStudio自带的Profiler工具。方式2:通过adb命令抓取。adb shell am dumpheap 进程名 /data/local/tmp/test.hprof方式3:通过代码调用Debug.dumpHprofData()获取当前应用的heap。var path = context?.cacheDir?.absolutePath + File.separator + "1.hprof"Debug.dumpHprofData(p

2022-03-31 09:33:31 2938 1

原创 Jetpack之Lifecycle源码解析

1. 首先看看LifecycleObserver相关类的继承关系:LifecycleObserver 是一个空接口,大部分情况下真正具有使用意义的是它的子接口 ,LifecycleObserver 可以说仅是用于类型标记public interface LifecycleObserver {}//用于监听 Lifecycle 的生命周期变化,可以获取到生命周期事件发生的具体变化public interface LifecycleEventObserver extends Lifecycl

2022-03-24 15:32:13 2542

原创 Gradle 问题小计

1. 修改gradle-wrapper.properties中的gradle版本号总是提示下载失败。直接将地址贴到浏览器进行下载,下载完成之后拷贝到 `~/.gradle/wrapper/dists/[你的gradle对应的版本号]/sha256sum/` 目录下,然后重新sync即可。2.Specifies whether it is acceptable to communicate with a repository over an insecure HTTP connection....

2021-09-24 14:37:03 225

原创 Ubuntu 安装VirtualBox

1.下载和添加 apt-secure 的 Oracle 公钥wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -2. 添加apt源sudo vim /etc/apt/sources.list在末.

2021-09-22 13:57:41 220

原创 Android 运行时 Overlay 实践

前言大家都知道 Android Overlay 是一种资源替换机制,就是说你可以替换掉原生应用的资源。那么 Overlay也分静态 Overlay(Static Resource Overlay)和运行时 Overlay(Runtime Resource Overlay)。 区别在于静态 Overlay 是需要在系统编译的阶段完成,比如修改 SystemUI 的资源等。而运行时 Overlay 可以通过安装一个 Overlay 的 apk 来完成资源替换。创建 Overlay新建 Overlay 之

2021-01-25 18:11:11 2482 1

原创 Protobuf3使用总结

protobuf基本使用集成protobufroot build.gradlebuildscript { repositories { google() jcenter() mavenCentral() } dependencies { classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.13" }} app build.gra

2020-12-11 18:36:42 379

原创 Android 代码片段收集

Android 代码片段收集Android EditText 做显示/隐藏密码时,光标默认会跑到第一个位置int pos = etPwd.getSelectionEnd();displayPwd = !displayPwd;etPwd.setTransformationMethod(displayPwd ?HideReturnsTransformationMethod.getInstance() : PasswordTransformationMethod.getInstance());etPwd

2020-12-07 14:11:35 85

原创 解决Android studio 运行App出现Warning: Default Activity not found的方法

如果您在升级Android Studio的版本后,或在生成新的APK之后看到这个错误,则可能需要清一下Android Studio的缓存:File -> Invalidate Caches / Restart...

2020-08-07 14:03:59 477

原创 MySql事务和锁学习笔记

MyISAM表锁MyISAM不支持事务,所以MyISAM的锁都是锁整张表的。表共享读锁对MyISAM表的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;-- 获取表的读锁lock table 表名 read;-- 如果另外一个会话已经拿到表的写锁,申请读锁会被阻塞-- 如果另外一个会话拿到的是读锁,不会当前获取读锁有影响-- 成功拿到读锁之后,当前会话可以正常的查询-- 当有一个会话拿到表的读锁之后, 另外一个会话执行写操作会被阻塞-- 拿到读锁之后, 无法

2020-07-24 16:08:58 120

原创 AndroidO上替换system/framework下面的jar包不生效

第一步、 源码环境下重新编译jar包,参考mk:include $(CLEAR_VARS)LOCAL_MODULE := testLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := test.jarLOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX) LOCAL_MODULE_CLASS := JAVA_LIBRARIESinclude $(BUILD_PREBUILT)通过mmm进行编译。

2020-07-24 10:19:49 1197 3

原创 【Git】如何实现部分提交

1. 添加你想先提交代码git add xxx # 如果已经全部都添加了,可以执行git rm --cached * 2. 将不需要提交的内容放置stashgit stash -u -k3. 提交git commit -m -s "xxxx"4. 恢复之前缓存在stash的代码git stash pop...

2020-07-21 15:25:46 1159

原创 Android 关于WebP的那些事

什么是webp格式WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器宽带资源和数据空间。WebP既支持有损压缩也支持无损压缩。相较编码JPEG文件,编码同样质量的WebP文件需要占用更少的计算资源. 可以使用Chrome打开WebP格式。怎么把png转为webp下载地址:https://storag...

2019-12-12 16:43:59 1346

原创 Android 如何使用tcpdump抓包

简介TCPDump可以将网络中传送的数据包完全截获下来提供分析下载tcpdump源码tcpdump提供了源码, 你可以前往https://www.tcpdump.org/下载最新版本我这里下载的最新版本是:tcpdump:4.9.2licpcap:1.9.0#下载wget http://www.tcpdump.org/release/tcpdump-4.9.2.tar....

2019-12-12 13:53:06 567

转载 mac 修改command+q 退出

实在受不了!在chrome中command+w 是关闭当前页面,command+q 退出浏览器;经常查阅资料打开了N多个窗口,关闭时不小心将command+q当command+w按;so ...All Pages Off!   这两个按钮在一起太容易误操作了!简直反人类!实在受不了了!查了下如何修改,其实也很容易。系统便好设置=》键盘=》快捷键=》应用快捷键记住这里退出的名字"退出Google C...

2018-06-06 16:25:23 17358 5

原创 Andorid Studio的Gradle缓存的第三方库的路径在哪?

前不久遇到很奇怪的问题,就是我写的一个A库,版本是1.0.0 push到maven上之后,用一个Demo App引入之后,没问题Api都对的。然后我发现A库有个方法名命名不正确,于是我就改了一个,由于改动小我就没有有该版本号还是1.0.0,我再用Demo App sync了一下,sync完之后发现api还是之前的有问题的那个。一开始以为是没有传成功,于是乎就从maven上把arr包下载下来,看了一

2018-01-15 20:58:55 10288

原创 Install JD-GUI on Mac OSX

About the AppApp name: JD-GUIApp description: jd-gui (App: JD-GUI.app)App website: http://jd.benow.ca/Install the AppPress Command+Space and type Terminal and press enter/return 

2018-01-11 14:08:00 534

原创 Android 使用系统Api设置系统各种属性(持续更新,欢迎讨论)

Github地址SystemSettingSet some system properties一. 显示亮度(Android系统的亮度值是0~255,数据类型为int型)//添加权限//调节屏幕亮度Setting.getDisplayApi(this).setScreenBrightness(result);//获取当前的屏幕亮度

2018-01-08 21:55:12 2034

转载 ubuntu14中文显示乱码的问题

乱码显示如下:  []:tm100    []:正常显示如下: [问题描述]:增加tm100项目    [评审人]:韦启发修改:vim ~/.bashrc在最后一行添加export LESSCHARSET=utf-8:wq. ~/.bashrc生效有用

2017-06-15 20:06:26 846

原创 Android 如何更换系统字体

Android系统的所有字体都放在/system/fonts/下面。有二种方法可以修改。1. 第一种是直接替换默认的字体文件DroidSans.ttf 默认数字和英文字体(无特殊格式)DroidSans-Bold.ttf 默认数字和英文粗体(无特殊格式)DroidSansFallback.ttf 默认中、英、数字体(所有字库均找不到匹配字体后会查找此字体库)把自

2017-05-17 14:39:32 8214

原创 如何获取电池状态

简单,一个广播搞定 IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); context.registerReceiver(this, filter); public void onReceive(Context co

2017-05-15 11:31:22 776

原创 如何获取GPS状态

简单,一个广播搞定 IntentFilter mIntentFilter = new IntentFilter(); mIntentFilter.addAction(LocationManager.GPS_FIX_CHANGE_ACTION); mIntentFilter.addAction(LocationManager.GPS_ENABLED_CHAN

2017-05-15 11:25:41 2896

原创 获取位置变化状态

简单,一个广播搞定IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION); intentFilter.addAction(LocationManager.MODE_CHANGE

2017-05-15 11:21:21 852

原创 如何获取U盘的状态

一个广播搞定IntentFilter f = new IntentFilter();f.addAction(Intent.ACTION_MEDIA_CHECKING);f.addAction(Intent.ACTION_MEDIA_MOUNTED);f.addAction(Intent.ACTION_MEDIA_EJECT);f.addAction(Intent.ACTION_ME

2017-05-15 11:13:39 803

原创 如何获取手机信号

1. 广播监听IntentFilter mIntentFilter = new IntentFilter();mIntentFilter.addAction(IntentHelper.ECARX_ACTION_TBOX_SIGNAL_CHANGED);mIntentFilter.addAction(IntentHelper.ECARX_ACTION_TBOX_CONNECTION_STAT

2017-05-15 11:00:30 1572

原创 那些好玩的gradle

1.Apk拷贝 当我需要把编译出来的Apk统一放到服务器或者某个地方的时候,这个脚本就可以起到作用。task('copyAll') { android.applicationVariants.all { variant -> variant.outputs.each { output -> if (!output.outputFile.name.co

2017-04-04 16:54:36 650

转载 知识体系

面试的时候,我会问面试者,你日常如何构建自己的知识体系,如何让自己更高更快更强?多数工程师并没有深入地思考过这个问题,基本上是零敲碎打,随机性大,基本上是脚踩西瓜皮滑到哪里算哪里。本着不能让你白来一趟的精神,好为人师的我会娓娓道来:第一阶段 认真构建完整的知识体系十几年前我投身软件行业的时候,光是讲解数据库原理、操作系统、TCP/IP、组网、算法等等基础知识的英文原版书摞起

2017-01-09 10:43:58 336

转载 android源码编译出现No private recovery resources for TARGET_DEVICE解决方法

mmm和mm出现No private recovery resources for TARGET_DEVICE 问题解决mmm和mm出现一下提示解决方法:log:No private recovery resources for TARGET_DEVICE xxxxxxmake: Entering directory `/xxxxx/android'

2016-12-29 11:43:06 9925

转载 repo

1 repo介绍Android 使用 Git 作为代码管理工具,开发了 Gerrit 进行代码审核以便更好的对代码进行集中式管理,还开发了 Repo 命令行工具,对 Git 部分命令封装,将百多个 Git 库有效的进行组织。1.1    清单库文件介绍一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。清单文件以xml格式组织的。举个例子:Ø

2016-12-28 13:40:29 440

转载 Ubuntu 安装 JDK 7 / JDK8 的两种方式

ubuntu 安装jdk 的两种方式:1:通过ppa(源) 方式安装.2:通过官网下载安装包安装.这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级使用ppa/源方式安装1.添加ppasudo add-apt-repository ppa:webupd8team/ja

2016-12-07 19:18:41 1464

转载 Git实现部分提交

每次当我正为一个特性努力时,总会发现我需要先对代码的另外一部分进行扩展。如果我不能这样做,我会在那个点创建一个分支。但是我没有。我会以两个特性类和真实特性的附加改变作为结尾。使用git分别提交两个版本的代码,同时保证每个代码都被编译很容易。我正在做我的新的大项目;命令行计算器。我已经完成了加法而且我对我已经完成的部分感到很高兴,我将要加入减法部分。在完成减法的途中我发现我需要对控制台输出格

2016-11-30 11:31:52 10606

转载 android的m、mm、mmm编译命令的使用

android源码目录下的build/envsetup.sh文件,描述编译的命令- m:       Makes from the top of the tree. - mm:      Builds all of the modules in the current directory. - mmm:     Builds all of the modules in the su

2016-11-29 18:37:08 1835

转载 使用Gson结合泛型类灵活解析JSON数据

一般比较规范的后端JSON返回数据,会遵循一些指定的JSON格式,比如:错误:[javascript] view plain copy {      "status": -1,      "data": null,      "err": "not_found"  }  正确:

2016-11-22 11:26:24 604

转载 android中string.xml中%1$s、%1$d等的用法

一、使用xliff的用法:标签介绍: 属性id可以随便命名 属性值举例说明%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 %n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0 %n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=

2016-11-16 09:23:25 260

原创 service中显示Dialog

通常情况下Dialog是依赖于Activity的,所以不能正常展示,但是可以设置成system dialog类型就可以正常展示:1.添加权限uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>2.添加代码AlertDialog.Builder builder = new

2016-11-15 20:07:04 436

原创 Android系统下好用的shell命令

adb shell am broadcast 后面的参数有:[-a ][-d ][-t ] [-c [-c ] ...] [-e|--es ...] [--ez ...] [-e|--ei ...] [-n ][-f ] []eg:am broadcast -a com.haley.b.TEST_ACTION

2016-11-15 20:01:27 1494

转载 Android系统Recovery工作原理之使用update.zip升级过程分析(七)---Recovery服务的核心install_package函数

Android系统Recovery工作原理之使用update.zip升级过程分析(七)---Recovery服务的核心install_package函数转载自:http://blog.chinaunix.net/uid-22028566-id-3533856.html一、       Recovery服务的核心install_package(升级up

2016-11-15 15:32:51 503

转载 Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程

Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程转载自:http://blog.csdn.NET/mu0206mu/article/details/7465603          目前update-script脚本格式是edify,其与amend有何区别,暂

2016-11-15 14:56:36 599

转载 Android OTA升级原理和流程分析(八)---升级程序update_binary的执行过程

Android OTA升级原理和流程分析(八)---升级程序update_binary的执行过程转载自:http://blog.chinaunix.net/uid-22028566-id-3533857.html一、update_binary的执行过程分析       上一篇幅中的子进程所执行的程序binary实际上就是update.zip包中的

2016-11-15 14:30:57 397

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除