每日思考
真的想要做一件事,不会总是为自己找借口的
Jetpack App Startup库的使用 Jetpack App Startup库的使用
特点 应用启动时进行高性能的初始化 明确定义各种初始化的依赖关系 使用先添加依赖: implementation("androidx.startup:startup-runtime:1.0.0-beta01") 你得为每一个需要初始化的组
2020-10-25
Android微件的简单用法 Android微件的简单用法
即Widget 微件类型 信息微件 集合微件 控制微件 混合微件 限制 手势 微件只能支持以下两种手势: 轻触 纵向滑动 基本步骤 创建AppWidgetProvider的子类 class KToolsAppWid
2020-10-25
Android快捷方式的简单用法 Android快捷方式的简单用法
限制从Android 7.1 开始支持 快捷方式类型 静态 以xml形式配置,并在主Activity中的<meta-data>标签下置顶 Android Studio并不能很好的支持,暂时没找到问题所在 动态 可以随时改变,即
2020-10-25
Android通知的简单用法 Android通知的简单用法
由于不同版本API兼容性问题,我们通常使用NotificationCompact去创建通知. 注册NotificationChannel一般在应用启动的时候注册通知channel: private const val channel
2020-10-25
Kotlin中的泛型 Kotlin中的泛型
概念如果A,B表示类型,f(*)表示类型转换, <= 表示继承关系(如果 A <= B,则表示A是B的子类) 里氏替换原则(LSP) 子类对象可以在程序中替换基类对象,”SOLID”原则中的L就是这个. 协变 如果f(*)是
2020-10-14
Kotlin中的inline Kotlin中的inline
inline/noinline/crossinline/reified内联,这个概念无需多说. kotlin中使用高阶函数在运行时会有一些性能损失:每一个函数都是一个对象,并且都会捕获一个闭包(哪些在函数体内可以访问到的变量),对函数对象和
2020-10-14
Kotlin中的infix Kotlin中的infix
infix即 “中缀表示法”,比如 1 + 2表示操作符以中缀的形式处于操作数的中间.(对应的也有前缀表达式,后缀表达式) 在kotlin中有这样的几种调用: val map = mapOf<String,Int>(
2020-10-14
深入浅出Android中的事件分发机制 深入浅出Android中的事件分发机制
从输入硬件到Android窗口这里直接从底层硬件分析到事件传递到View的流程,具体的调用链查看源码,这里是基于Android 10 的源码分析的. 主要流程如下: 输入设备产生信号,比如手触摸屏幕,触摸屏产生电流或者电压信号,传递给设
2020-10-13
浅谈Android中的Broadcast 浅谈Android中的Broadcast
![Android 广播](https://oss.jiangkang.tech/jk/Android 广播.png) 广播实现机制先思考几个问题: 广播注册到了什么地方? 当发送广播的时候,是谁在分发广播? BroadcastRecei
2020-10-09
浅谈Android中的Handler 浅谈Android中的Handler
Handler.post(runnable) vs Handler.sendMessage(Message msg) public final boolean post(@NonNull Runnable r) { re
2020-10-06
用SDL展示一张JPG图片 用SDL展示一张JPG图片
#include <iostream> #include "SDL2/SDL.h" #include "SDL2_image/SDL_image.h" #include "demo_sdl.h" using namespace st
2020-09-13
用SDL写个Hello World 用SDL写个Hello World
const int WIDTH = 600; const int HEIGHT = 600; void SDLExample() { if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
2020-09-12
Android Service启动流程分析 Android Service启动流程分析
之前写过App和Activity的启动流程分析: App启动流程分析 Activity启动流程分析 现在梳理下Service的启动流程吧 基于Android 10的源码分析 ContextWrapper.startService()
2020-08-23
Activity启动流程分析 Activity启动流程分析
在App启动流程分析中已经分析过大部分的流程了,但是对于Activity的启动流程并没有详细的说明,这里讲一下. 在分析源码之前,先想一下大概有哪些疑问: Activity是如何加载的? Activity为什么必须在Manifest文件中
2020-08-23
文件压缩格式 文件压缩格式
zlibzlib 是一个压缩,解压数据的工具库,只是单纯的数据压缩,不管数据来源。 gzipgzip 只能压缩单个文件 tartar 压缩多个文件,通常与gzip配合使用。比如linux上常见的. tar. gz zipzip 用于压缩多个
2020-08-22
Android Hook之拦截Activity的启动 Android Hook之拦截Activity的启动
Android中的插件化和热修复已经应用了很多年了,这里面涉及的主要就是Hook,即反射 + 代理的技巧去实现一些常规代码无法实现的功能. 之前有说过Hook点击事件的方式,这里讲一下拦截Activity的Hook方法,这也是插件化的基础.
2020-08-22
Android Studio查看和调试AOSP源码 Android Studio查看和调试AOSP源码
之前说过使用VSCode阅读AOSP源码的方法,但是作为Android开发,还是对Android Studio熟悉一些,这里看下如何使用Android Studio查看AOSP源码. 如果你之前没完整的编译过AOSP,可以按照下面的流程进行
2020-08-21
MultiDex原理分析 MultiDex原理分析
单个Dex文件,即Dalvik Executable,代码中可调用的引用总数最多为64K(65536个). 版本差异 Android 5.0 之前 使用的是Dalvik虚拟机,默认情况下Dalvik会限制每个APK只能使用一个classes
2020-08-19
1 / 5