Android 截屏与录屏常用方法

1、全屏截屏 public static final int EVENT_SCREENSHOT = 22;//截图事件 private MediaProjectionManager mediaProjectionManager; private MediaProjection mediaProjection; private Ima....

Android 音量调节

0. Thanks To Android音量控制调节 android 音量控制setVolumeControlStream android 音量调节以及媒体音量界面 1. 音量调节 我们知道,在平常调节音量的时候,是有一定的调节数值, 也就是,...

AudioManager 音频焦点的申请与释放

转自以下两篇 《深入理解Android:卷III A》一一3.4AudioFocus机制的实现 AudioFocus的申请与释放 场景:当听音乐并且在刷朋友圈或者微博的时候,我们想点击一个视频看,此时音乐会暂停只保留...

OKHttp 缓存拦截器

OkHttp 默认是不进行缓存的,需要手动配置 public class OkHttpManager { private OkHttpClient client; private OkHttpManager() { // 缓存目录 File file = new File(Environm......

Glide 自定义ModelLoader

Glide特点 [1] 使用 getApplicationContext或者异步线程调用glide,他的生命周期和Application保持一致 非application ActivityFragmentLifecycle ,application-》ApplicationLifecycle [2...

Android 焦点机制

/* *默认焦点查找规则 *【1】从根节点深度优先搜索 *【2】符合enable,visible,focusable是最基本的条件 *【3】targetSDK >= android P时,0像素View无法聚焦 *【4】正在layout的布局无法聚焦...

2022/02/27 08:19
234
Android 关于WindowManager的AppToken、WindowToken

【1】Android窗口类型 Android中存在很多窗台类型,类型值从低到高,值越大显示的层越高,本篇使用以下程序为测试代码 private AlertDialog getAlertDialog(String text,int type) { AlertDi...

算法:顺时针打印二维数组(矩阵)

题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 1,2,3,4,8,12,16,15,14,13...

Android 相册媒体库读写优化

一、快速查询手机中的图片和视频 本方案适合通过媒体库实现快速查询视频和图片,对于SD卡扫描,也可以参考。 我们知道,媒体库属于数据库,CURD数据库属于IO操作,但是数据的IO相对特殊,很难...

Android 动态折线图表实现

一、动态折线图效果 (为了便于观察,初始等待了5秒) 二、代码实现 package com.appwidget; public class LineChartView extends SurfaceView implements SurfaceHolder.Callback, Runnabl...

2021/04/24 19:11
490
Java MethodHandle 反射性能优化

一、关于指令调用 1、关于JVM指令调用 无论是基于栈的JVM还是还是基于寄存器的DVM,他们除了操作数栈中变量的移动和空间分配、以及程序计数器的不同,基本方法调用的基本指令都是遵守JSR规范...

Javac 常量传播对类初始化的影响

一、Java Compiler 虚拟机运行java类时,需要将类进行初始化,一般来说,java代码在虚拟机中执行,至少需要2次编译(原因是Javac编译后,还要经过”解释器+JIT“可能反复动态优化编译)。Jav...

JMM 内存可见性

一、什么是可见性 Java中,在一个线程中,修改主内存变量,修改同步到主内存(堆区+方法区)中方,然后立即后通知其他线程进行缓存同步。 二、JMM是如何实现可见性的? 在java中,锁相关的问题...

JMM 指令重排序

一、指令为什么要重排序? 在计算机系统中,指令为了更快的完成结果,会根据逻辑关系、指令大小进行重排序,以达到超流水线的效果,但在代码执行完后,保证结果输出是一致的。 在JVM中又两条...

Android AMS IPC代理获取

一、问题 我们知道,ActivityManagerService随着版本的变化,获取方式上也出现了差异,最容易获取的方式当然是 ActivityManager activityManager = Context.getSystemService("activity"); ...

Android Dex编译优化四

JIT+解释器 JIT编译: C1 - 根据proflie简单编译 - quicken模式 C2 - 根据profile - 其他编译模式 全编为什么没有混编好? 没考虑到热点方法,没有考虑到方法代码调用的频次和热度,没有参考...

Android IO 优化

一、什么是拷贝 之前有一篇文章说过拷贝: 广义上讲就是任何数据复制,但是在Linux系统中比较特殊,这里的概念比较狭义,物理内存之间的数据复制才叫拷贝 IO设备、Input 、DMA(Direct Memo...

Linux 进程通信内存拷贝次数图解

一、进程通信中“拷贝”的概念 拷贝: 广义上讲就是任何数据复制,但是在Linux系统中比较特殊,这里的概念比较狭义,物理内存之间的数据复制才叫拷贝 IO设备、Input 、DMA(Direct Memory A...

Java 从字节码角度处理前端编译问题

一、关于Java编译 java从代码编写到程序运行需要两次编译,第一次是Javac编译,第二次是JIT+解释器编译 Javac是前端编译:负责字节码优化 JIT+解释器是后端编译:负责字节码优化,存储空间优...

Android ClassLoader Hook注入方式

最近尝试热修复,反射调用补丁类,发现android O的类提前加载了,但没有初始化,所以出现了补丁无法生效的问题,对比一下之前版本,发现Android 6.0 执行到指定位置才去加载,并且初始化,因...

没有更多内容

加载失败,请刷新页面