自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (1)
  • 收藏
  • 关注

原创 第一行代码 (第三版) 第十一章(协程)

协程:允许我们在单线程模式下模仿多线程编程效果一:协程的基本用法 1.GlobalScope.launch{}(顶层协程) delay()(非阻塞式的挂起函数) 2.runBlocking{} (测试环境使用) 会挂起外部线程 launch{} (创建多个子协程) 3.coroutinesSco...

2021-12-15 18:16:32 495 1

原创 第一行代码 (第三版) 第八,九,十章

一: 泛型和委托1.泛型 泛型类: class MyClass<T>{ fun method(param: T) : T { return param }} 泛型方法: class MyC...

2021-12-15 17:10:01 2390

原创 第一行代码 (第三版) 第六,七,十二章

一: 定义高阶函数定义: 一个函数接收另一个函数作为参数 或者 返回值是另一个函数二:内联函数的作用三:noinline 与 crossinline

2021-12-15 15:12:20 2074

原创 Android开发艺术探索十五 性能优化

1.布局优化2.绘制优化3.内存泄漏优化4.响应速度优化和ANR分析5.ListView 和 Bitmap 优化6.线程优化7.优化建议

2021-11-29 15:03:53 1042

原创 Android开发艺术探索十三 综合技术

1.异常捕获 CrashHandler2.multidex 解决方法数越界3.动态加载4.反编译

2021-11-29 14:44:30 1357

原创 Android开发艺术探索十二 Bitmap的加载和Cache

1.Bitmap的高校缓存2.Android 中的缓存策略3.ImageLoader的使用

2021-11-28 18:55:50 279

原创 Android开发艺术探索十四 JNI 和 NDK编程

1.JNI开发流程2.NDK开发流程3.JNI数据类型和类型签名4.JNI调用Java方法的流程

2021-11-28 18:42:15 81

原创 Android开发艺术探索十一 Android的线程和线程池

1.主线程和子线程2.Android 中的线程形态AsyncTask:AsyncTask的工作原理:HandlerThread:IntentService:3.Android 中的线程池

2021-11-28 18:40:41 500

原创 Android开发艺术探索十 Android的消息机制Handler

handler:将一个任务切换到某个指定的线程中去执行解决:在子线程中无法访问UI问题(因为Android ui 不是线程安全的)1.ThreadLocal的工作原理2.消息队列的工作原理3.Looper的工作原理4.Handler的工作原理5.主线程的消息循环...

2021-11-28 16:35:09 187

原创 Android开发艺术探索九 四大组件的工作过程

Activity:展示型组件1.Service:计算型组件BroadcastReceiver:消息型组件ContentProvider:数据共享型组件

2021-11-28 15:57:45 785

原创 Android开发艺术探索八 理解Window 和 WindowManager

Window: View 的直接管理者。WindowManager :是一个接口,实现类是WindowManagerImplWindowManager和 WindowManangerService 的交互是IPC过程Window:flags:控制window的显示特性FLAG_NOT_FOCUSABLE: 表示window不需要获取焦点,也不需要接收各种输入...

2021-11-27 01:21:59 317

原创 Android开发艺术探索七 动画

一:动画分类 1.View动画 2.帧动画:顺序播放一组预先定义好的图片,类似于电影播放3.属性动画:任意对象的属性进行动画,在时间间隔内完成对象从一个属性到另一个属性值的改变(建议代码实现属性动画)二:特殊使用场景:LayoutAnimation 1.LayoutAnimation: ViewGroup 可以控制子元素的出场效果(ListView) 2.Activity切换效果:overrid...

2021-11-27 01:21:44 83

原创 Android开发艺术探索六 Drawable

常用:BitmapDrawable, ShapeDrawable , LayerDrawable , StateListDrawable不常用:LevelListDrawable , TransitionDrawable , InsetDrawable , ScaleDrawable , ClipDrawable , 自定义DrawableBitmap : 表示一张图片Shape:通过颜色来构造图形,有纯色和渐变效果的图形Layer: xml 标签 <layer-list>,表示

2021-11-27 01:21:26 66

原创 Android开发艺术探索五 RemoteView

一: RemoteView 的应用(都运行在系统的 SystemServer 进程)1.通知栏: NotificationManager notifycation.contentview = remoteview2.桌面小部件:AppWidgetProvider(本质是是一个广播) 需要在AndroidManifest 注册 receiver二:RemoteView 的内部机制(在其他进程中,显示并更新 view (只支持特定的...

2021-11-27 01:21:02 1379

原创 Android开发艺术探索四 View 工作原理

一.ViewRoot 和 DecorView二:理解MeasureSpec1.MeasureSpec2.LayoutParams三:View的工作流程1.measure2.layout3.draw四:自定义View1.自定义View 的分类2.自定...

2021-11-27 01:20:43 78

原创 Android开发艺术探索三 View 事件体系

一:基础知识View:所有控件的基类 1.View的位置参数: 2.MotionEvent和TouchSlop: MotionEvent: 手指触摸屏幕的一系列事件 TouchSlop:滑动的最小距离,和设备系统有关 3.VelocityTracker, GestureDetetor , Scroller: VelocityTrack...

2021-11-27 01:20:00 96

原创 Android开发艺术探索二 IPC机制

一:多进程模式二:IPC基础概念三:Android 中的 IPC 方式四:Binder 连接池五:IPC 方式选择

2021-11-27 01:19:15 118

原创 Android开发艺术探索一 Activity

一:生命周期:典型情况:onCreate - onRestart -onStart - onResume - onPause - onStop - onDestory 1.按back键:onPause - onStop - onDestory 2.按home键:onPause - onStop - onRestart - onStart - onResume 3.A(activity)...

2021-11-18 11:48:17 1083

原创 android 主板 无线连接方式

参考 :https://www.cnblogs.com/qrlozte/p/5112501.html前提: Android 手机 和 PC 处于同一个子网(局域网)中. Android 手机已取得 root 权限.我的环境: Android 手机和 PC 都链接到一个无线路由器的网络中.1. PC 上配置 adb.exe 的 PATH 环境变量.2. android 上自己写一个执行adb命令的界面3. 手机打开命令行工具(adb 命令的界面), 输入如下命令su .

2021-08-02 16:10:20 447 1

原创 人脸追踪

总结: 中心点 —— 实际点 —— 偏移量 —— 增量 —— 死区 —— 边界检测

2021-04-27 11:38:18 18

原创 第一行代码 (第三版) 第四,五章

lateinit 关键字(延迟初始化,使用这个有 空指针 风险)sealed 关键字(密封类,自动检查该密封类有哪些子类,并强制要求你将每一个子类所对应的情况全部处理) 密封类及其子类:只能定义在同一文件的顶层位置,不能嵌套在其他类中扩展函数:(最好定义成 顶层方法,这样可以让扩展函数拥有全局的访问域) 在不修改某个类源码的情况下,仍然可以打开这个类,向该类添加新的函数 (函数名前加 className) operator :运...

2021-04-02 16:57:25 134

原创 第一行代码 (第三版) 第三章

activity启动模式:singleTask: 栈内复用singleInstance:独立栈,最后关闭的acitivity标准函数:with: 连续调用同一个对象的多个方法时,让代码变得更加简洁(函数返回值为最后一行代码)run:在某个对象的基础上调用, 使用Lambda表达式中最后一行代码作为返回值返回apply:此函数无法指定返回值,而是会自动返回调用对象本身静态方法:object(单例类)companion object {}顶层方法@JvmStatic 注解.

2021-03-18 13:21:37 77

原创 第一行代码 (第三版) 第二章

语法糖:1.当一个函数中只有一行代码时,kotlin允许我们不必编写函数体,可以直接将唯一的一行代码写在函数定义的尾部,中间用等号连接。open(关键字):说明类可以被继承主构造函数,次构造函数:继承不加 “()”的情况:data (关键字):数据类(model), 重写了equals(), hashCode() , toString()object(单例类):集合:集合的函数式api: maxBy, filter, mapjava 函数式api:如果一个Java方法的

2021-03-15 14:47:20 83

原创 ndk 开发基础一 Android调用c源码

一.ndk环境配置 1.下载必要文件: NDK ; CMake 2.配置ndk路径 3.配置gradle(app)文件//------------------------------ ndk 配置-----------------------------------------------// ndk { // 设置支持的SO库架构 abiFilters 'arm64-v8a...

2020-09-15 12:04:37 270

原创 ndk 开发基础二 Android调用so库

注意:ndk 通信标准:Java_包名_类名_方法名// Created by Jasmine on 2020/9/14.#include <jni.h>JNIEXPORT jstring JNICALLJava_com_example_tongxiaodemo_activity_WatchDogActivity_watchdog(JNIEnv *env, jobject thiz) {return (*env)->NewStringUTF(env, "C");}

2020-09-15 11:43:43 202

原创 retrofit

get / post :GET在浏览器回退时是无害的,而POST会再次提交请求。 GET产生的URL地址可以被Bookmark,而POST不可以。 GET请求会被浏览器主动cache,而POST不会,除非手动设置。 GET请求只能进行url编码,而POST支持多种编码方式。 GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 GET请求在URL中传送的参数是有长度限制的,而POST么有。 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。 GET比

2020-09-06 19:07:03 92

原创 HashMap 源码解析总结

环境:JDK 1.8hash 冲突: 1.8之前使用链表解决;1.8之后使用链表+红黑树指的是hashCode 一样initial capacity(位运算,与运算): 默认为16,最大为2的30次方Initial capacity = 想存的个数➗0.75 +1 (阿里巴巴手册建议:因为存在扩容问题)问题:集合底层都是2的n次幂 不然会导致hash冲突(initial capacity)数组的索引: hash%length(n-1) n为2的n次幂 ; lengt...

2020-09-06 13:11:17 84

原创 tcp 三次握手,四次挥手

osi:七层 tcp:四层 应用层 应用层 表示层 ...

2020-08-02 10:58:25 94

原创 binder 进程间的通信机制

Binder : android 进程间的通信机制 ; linux下 dev/binder 驱动 ; java的Binder.java 跨进程多进程的优势: 扩大内存 ; 危险隔离扩大内存:一个进程能申请的空间有限,可以通过多进程申请到更多内存。危险隔离:加载图片时,使用多进程能够防止主线程崩溃。binder的优势: binder 共享内存 ...

2020-07-26 21:10:51 130

原创 百度语音_语音唤醒

错误码:11002 没有授权文件解决:进入core的manifest文件,把meta修改成自己项目的

2020-07-22 11:37:24 496

原创 JVM 虚拟机

运行时数据区域线程共享的数据区:Method Area (方法区) ;Heap(堆)线程隔离的数据区:VM Stack(虚拟机栈) ; Native Method Stack (本地方法栈) ; Program Counter Register (程序计数器)程序计数器: 多线程线程切换并分配处理器,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。每条线程有独立的程序计数器,用于线程切换,记录线程的下一条指令,为了线程能恢复到正确的执行位置VM Stack : ja...

2020-07-18 18:28:33 81

原创 Heap (堆内存) : 内存泄露,内存溢出,内存抖动 ,ANR

内存泄漏:内存溢出:内存抖动:

2020-07-18 18:21:42 465

原创 Android 版本适配 6~11

版本适配推荐博客:https://blog.csdn.net/qq_17766199/category_7174141.htmlandroid 6.0 : 权限动态申请(仅限危险权限)android 7.0 : 应用间共享文件(FileProvider); signature versions (v1,v2全部勾选) 解决方案: 鸿洋博客 https://blog.csdn.net/lmj623565791/article/d...

2020-07-12 12:39:34 436

原创 android 架构特点介绍

简单记录mvc:最早的架构。 movel:数据 view: 视图 controller: activity 缺点是:activity代码量大,拥挤,逻辑不清晰。activity耗时时间是5s,业务多程序容易被回收。 优点是:适合界面复杂的应用。mvp: 大量运用抽象工厂。model:数据 view:视图 presenter: 处理用户和Android端的逻辑交互。 缺点是:代码量多 优点是:逻辑简单,适合界面少的应用,中...

2020-06-23 12:07:06 172

原创 项目中使用kotlin和Android的区别

只是简单的记录一下一。kotlin 不用findViewById或Butterknife,可以通过插件Kotlin-Android-Extensions之后,直接使用。原理大概是,看源码会知道,kotlin会自动生成findViewById,然后创建HashMap缓存找到的View,第一次调用为空的时候就会去调用findViewById,然后把id作为key,view作为value,存入map中,第二次使用就直接调用。注意的是:fragment必须在OnViewCreated创建之后使用id,不

2020-06-23 11:38:05 741

原创 事件分发机制总结

借鉴博客:https://www.jianshu.com/p/38015afcdb58事件分发:由上至下事件处理:由下至上activity: dispatchTouchEvent ; onTouchEventviewGroup: dispatchTouchEvent ; onTouchEvent ;...

2020-01-03 15:20:48 127 3

原创 腾讯热更新

官网:https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20181014122344视频:http://v.qq.com/vplus/9f3b4b1232819f453becd2356a3493c4?page=video自我整理:思路:1.修复bug ; 2.旧包地址 ; 3....

2020-01-02 14:11:33 606

原创 Bugly 1:版本更新

官网:https://bugly.qq.com/docs/user-guide/instruction-manual-android-upgrade/?v=20181014122344选择自动导入版本更新1.全量更新: 版本号 : 版本名 :版本号相同,判断版本名 检查更新:下次应用启动;用户手动更新( ...

2019-12-30 15:09:41 194

原创 极光推送2:别名,Registration ID

适用场景:向指定 单个人 推送信息,在进程保活期间执行客户端(功能主要实现人):别名:同个APP,不同设备,可以设置同一个别名,同时推送。实现:异地登录推送------登录界面(删除别名)-------登录成功(设置别名)弊端:结束进程,仍然可以推送服务端(功能主要实现人):Registration ID:一台设备一个Registration ID实现:Android端...

2019-12-27 15:06:52 1243

原创 极光推送

官网:https://www.jiguang.cn/1.implementation 'cn.jiguang.sdk:jpush:3.5.0' // 此处以JPush 3.4.1 版本为例。implementation 'cn.jiguang.sdk:jcore:2.2.4' // 此处以JCore 2.2.4 版本为例。2.applicationJPushInterfac...

2019-12-26 10:51:03 537

手势缩放图片

自定义图片控件,控件带有通过手势进行智能缩小放大,即,可以动态获取手势的点击,形成的放大

2018-04-25

空空如也

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

TA关注的人

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