![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
张广涛
android 开发程序猿
展开
-
Guava
1,基本工具PreconditionsString abc = null;Preconditions.checkArgument(abc!=null);Preconditions.checkArgument(abc!=null,"abc !=null",abc);//抛出非法参数异常常见Object方法Objects.equal("a", "a"); // returns trueObjects.equal(null, "a"); // returns falseObjects.equa原创 2020-12-04 13:46:49 · 430 阅读 · 1 评论 -
android源码3
初始化Java层Binder框架在Android系统中,在Java初创时期,系统会提前注册一些JNI函数,其中有一个函数专门负责搭建Java Binder和Native Binder交互关系rameworks\base\core\jni\android_util_Binder.cppint register_android_os_Binder(JNIEnv* env){//初始化Java Binder类和Native层的关系 if (int_register_android_os_Bind原创 2020-06-15 21:49:34 · 282 阅读 · 0 评论 -
android 源码分析2
Zygote是如何创建 Java世界的frameworks\base\cmds\app_process\app_main.cppint main(int argc, const char* const argv[]){ /* Zygote进程由init通过fork而来,我们回顾一下init.rc中设置的启动参数: -Xzygote/system/bin --zygote --start-system-server */ // These are global variabl原创 2020-06-14 14:18:43 · 1351 阅读 · 0 评论 -
android 源码分析
1,init 进程system\core\init\init.c它是用户空间的第一个进程它负责创建系统中的几个关键进程重点 init 进程如何创建 zygoteint main(int argc, char **argv){ int device_fd = -1; int property_set_fd = -1; int signal_recv_fd = -1; int keychord_fd = -1; int fd_count; int s[原创 2020-06-13 16:46:38 · 299 阅读 · 0 评论 -
Kotlin基础
Kotlin高阶函数class Title{ fun txt(str:String){ println(str) }}class Header{ fun title(init:Title.()->Unit):Title{ var t = Title() t.init() return t; }}class HTML{ fun header(init:Header.()->Uni原创 2020-05-16 01:06:29 · 471 阅读 · 0 评论 -
android屏幕适配
import android.app.Activity;import android.app.Application;import android.content.ComponentCallbacks;import android.content.res.Configuration;import android.util.DisplayMetrics;public class Dens...原创 2020-04-06 11:19:57 · 132 阅读 · 0 评论 -
ExternalLiveData
public class ExternalLiveData<T> extends MutableLiveData<T> { public static final int START_VERSION = LiveData.START_VERSION; @Override public void observe(@NonNull Lifecycle...原创 2019-12-23 15:27:51 · 295 阅读 · 0 评论 -
kotlin 中的协程
kotlin 中的协程runBlocking 和 coroutineScope 的区别他们是不同的概念runBlocking 会阻塞当前线程 直到runBlocking 域中执行完成fun main(arr:Array<String>) { runBlocking(Dispatchers.Default){ delay(1000) pri...原创 2019-12-23 15:24:11 · 77 阅读 · 0 评论 -
自定义控件
Paint 画笔//禁用硬件加速setLayerType(LAYER_TYPE_SOFTWARE,null);paint = new Paint();//设置颜色paint.setColor(Color.RED);// 设置填充样式 STROKE 描边 FILL 填充 FILL_AND_STROKE 填充和描边paint.setStyle(Paint.Style.FILL_AND_S...原创 2019-09-22 22:19:16 · 118 阅读 · 0 评论 -
android辅助功能
AccessibilityService//接收到系统发送AccessibilityEvent时的回调@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) { CharSequence packageName = event.getPackageName();}//服务中断时的回调@Overr...原创 2019-09-22 22:18:33 · 1426 阅读 · 0 评论 -
安卓架构组件
Lifecycles管理您的 Activity 和 Fragment 生命周期如何使用来看接口LifecycleObserver //如果实现这个 接口 需要使用注解方式来来监听生命周期的变化GenericLifecycleObserver //如何实现这个接口 当生命周期变化 调用 onStateChanged 方法FullLifecycleObserver //这个接口是全部的生命...原创 2019-08-18 21:02:58 · 106 阅读 · 0 评论 -
通用makefile 编写
CC = gccprom = testdeps = $(shell find ./ -name &quot;*.h&quot;)src = $(shell find ./ -name &quot;*.c&quot;)obj = $(src:%.c=%.o) #字符替换函数,它会将src所有的.c字串替换成.o$(prom): $(obj) $(CC) -o $(prom) $(obj)%.o: %.c $(deps...原创 2018-05-26 09:44:39 · 143 阅读 · 0 评论 -
java go nginx android https 单向 双向认证
server.shopenssl genrsa -des3 -out server.key 2048openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crtclient.shopenssl genrsa -out ca.key 2048openssl ...原创 2018-09-23 08:48:24 · 983 阅读 · 0 评论 -
Android优化有感
我们讲Android 优化 优化的点在哪1 ,绘制优化2,内存优化3,存储优化4,稳定性优化5,耗电优化6,apk包大小优化绘制优化先说说原理: 界面是每隔16ms 刷新一次 对图像进行栅格化渲染出来 如果大于16ms 才渲染出来 这就会让用户等到32ms 后才看到画面或者16ms的倍数 就会感觉卡 那关键什么原因导致渲染卡顿呐导致渲染卡顿(绘制任务繁重耗时太长): ...原创 2019-06-23 17:20:18 · 101 阅读 · 0 评论 -
常用UI
Shader 着色器1,BitmapShader 位图着色器 可以实现圆形,圆角矩形等图片Paint paint = new Paint();Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);BitmapShader bitmapShader = new Bitmap...原创 2019-07-13 21:16:15 · 390 阅读 · 0 评论 -
android 滚动
坐标系原点在左上点 向右X 递增 向下Y 递增 (相对 和 绝对坐标)getRawX() 获取触摸点到屏幕左边的距离getRawY() 获取触摸点到屏幕的上边的距离getX() 获取触摸点到父控件左边的距离getY() 获取触摸点到父控件上边的距离也可以使用 getLocationOnScreen(int localtion()) 获取滑动的七种方法layout 方法这个...原创 2019-07-14 16:39:22 · 342 阅读 · 0 评论 -
内存线程网络
内存数据类型byte 1 字节 8bitshort 2 字节 16bitint 4 字节 32 bitlong 8 字节 64bitfloat 4 字节 32bitdouble 8 字节 64bitboolean 1 字节 8bitchart 2 字节 16bit自动装箱基本类型与包装类之间的自动转换...原创 2019-07-28 22:25:59 · 133 阅读 · 0 评论 -
android常用框架源码分析
Rxjava优点:基于事件流的链式调用,逻辑简洁,使用简单引入简单看一下Rxjava 一般使用方式//观察者Observable.create(new ObservableOnSubscribe(){ @Override public void subscribe(ObservableEmitter emitter) throws Exc...原创 2019-08-04 14:58:28 · 291 阅读 · 0 评论 -
RxJava 背压
RxJavaRxJava是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。不是太明白 说白点 就是 对数据 流的操作 比如 过滤 判断 组合 等等它能够是程序逻辑越来越复杂的情况下 依然能够保持简洁清晰背压(backpressure)https://www.jianshu.com/p/ff8167c1d191/当上下游在不同的线程中,通过Observable...转载 2019-08-04 16:05:05 · 341 阅读 · 0 评论 -
hbuild as离线打包 出现首页进入不了 进度条一直转进度
hbuild as离线打包 出现首页进入不了 进度条一直转进度 说明 资源没有找到 解决 修改 applicationId 的同时一定要修改 manifest 中 package 切记 不然hbuild 找不到资源导致一直转进度...原创 2018-05-10 09:09:22 · 867 阅读 · 0 评论