技术分享

前言 AccessibilityService是一种辅助服务,大谷歌开发出来的初衷原本是为了方便身体不便的用户更好的使用Android系统,比如为视力不好的用户朗读屏幕上面的文字等,在2013年之前,使用这个的开发者还是很少的,到了2013年被国人发现...

发布 0 条评论

使用协程封装异步操作 private suspend fun showDialog(context: Activity): Boolean { return suspendCoroutine { val builder = AlertDialog.Builder(context) builder.setTitle("问题:") b...

发布 0 条评论

简介 在每一个使用 git 进行版本管理的仓库,都有一个目录 .git/hooks,包含 commit 各个阶段 Hooks 的脚本。这些 Hooks 在 git 操作 commit、push、merge 等得时候,可以做前置或者后置的操作。Git 支持的常用钩子见下表,更多请查看...

发布 0 条评论

前言 native的异常不同于Java异常,往往堆栈是一堆的地址,如下所示 本文主要介绍如何通过一系列的工具去还原native异常堆栈。 获取崩溃日志 分析Native Crash最直接的方式是查看logcat日志,一般情况下,只要APP没有自己实现信号捕...

发布 0 条评论

RegisterForActivityResult介绍 registerForActivityResult是Google提供的,用来取代startActivityForResult的方法,通过registerForActivityResult,我们可以将每一次与其他界面的交互给封装到单独的地方。 registerForActivityResul...

发布 0 条评论

NDK异常处理 jni异常一般发生在C调用java方法的时候,分为两种情况 当我们使用JNIEnv获取jclass、jmethod等出现了类不存在、方法不存在等 当我们在native层调用的java方法内部出现异常的时候 异常处理方法 检查异常 我们可以使用Exc...

发布 0 条评论

打印日志 #include "android/log.h" #ifndef _ANDROID_LOG_TAG_ #define _ANDROID_LOG_TAG_ #define DEBUG //定义了这个,才打印日志 #define TAG "ndk-jni" // 这个是自定义的LOG的标识 #ifdef DEBUG #defi...

发布 0 条评论

ConstraintSet ConstraintSet允许我们动态的修改ConstraintLayout中某些控件的约束,并在约束改变的时候,为我们添加上动画效果 官方文档:https://developer.android.com/reference/androidx/constraintlayout/widget/ConstraintSet...

发布 0 条评论

extern 与头文件 一、头文件 首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在 #include的地方展开一下,没别的意义了,其实头文件主要是给别人看的。 我做过一个实验,将头文件的后缀改成 xxx.txt,然后在引...

发布 0 条评论

子模块 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。在其他的博...

发布 0 条评论