- 博客(99)
- 资源 (1)
- 收藏
- 关注
原创 第一行代码 (第三版) 第十一章(协程)
协程:允许我们在单线程模式下模仿多线程编程效果一:协程的基本用法 1.GlobalScope.launch{}(顶层协程) delay()(非阻塞式的挂起函数) 2.runBlocking{} (测试环境使用) 会挂起外部线程 launch{} (创建多个子协程) 3.coroutinesSco...
2021-12-15 18:16:32
613
1
原创 第一行代码 (第三版) 第八,九,十章
一: 泛型和委托1.泛型 泛型类: class MyClass<T>{ fun method(param: T) : T { return param }} 泛型方法: class MyC...
2021-12-15 17:10:01
2466
原创 第一行代码 (第三版) 第六,七,十二章
一: 定义高阶函数定义: 一个函数接收另一个函数作为参数 或者 返回值是另一个函数二:内联函数的作用三:noinline 与 crossinline
2021-12-15 15:12:20
2155
原创 Android开发艺术探索十五 性能优化
1.布局优化2.绘制优化3.内存泄漏优化4.响应速度优化和ANR分析5.ListView 和 Bitmap 优化6.线程优化7.优化建议
2021-11-29 15:03:53
1095
原创 Android开发艺术探索十二 Bitmap的加载和Cache
1.Bitmap的高校缓存2.Android 中的缓存策略3.ImageLoader的使用
2021-11-28 18:55:50
331
原创 Android开发艺术探索十四 JNI 和 NDK编程
1.JNI开发流程2.NDK开发流程3.JNI数据类型和类型签名4.JNI调用Java方法的流程
2021-11-28 18:42:15
123
原创 Android开发艺术探索十一 Android的线程和线程池
1.主线程和子线程2.Android 中的线程形态AsyncTask:AsyncTask的工作原理:HandlerThread:IntentService:3.Android 中的线程池
2021-11-28 18:40:41
554
原创 Android开发艺术探索十 Android的消息机制Handler
handler:将一个任务切换到某个指定的线程中去执行解决:在子线程中无法访问UI问题(因为Android ui 不是线程安全的)1.ThreadLocal的工作原理2.消息队列的工作原理3.Looper的工作原理4.Handler的工作原理5.主线程的消息循环...
2021-11-28 16:35:09
266
原创 Android开发艺术探索九 四大组件的工作过程
Activity:展示型组件1.Service:计算型组件BroadcastReceiver:消息型组件ContentProvider:数据共享型组件
2021-11-28 15:57:45
845
原创 Android开发艺术探索八 理解Window 和 WindowManager
Window: View 的直接管理者。WindowManager :是一个接口,实现类是WindowManagerImplWindowManager和 WindowManangerService 的交互是IPC过程Window:flags:控制window的显示特性FLAG_NOT_FOCUSABLE: 表示window不需要获取焦点,也不需要接收各种输入...
2021-11-27 01:21:59
374
原创 Android开发艺术探索七 动画
一:动画分类 1.View动画 2.帧动画:顺序播放一组预先定义好的图片,类似于电影播放3.属性动画:任意对象的属性进行动画,在时间间隔内完成对象从一个属性到另一个属性值的改变(建议代码实现属性动画)二:特殊使用场景:LayoutAnimation 1.LayoutAnimation: ViewGroup 可以控制子元素的出场效果(ListView) 2.Activity切换效果:overrid...
2021-11-27 01:21:44
137
原创 Android开发艺术探索六 Drawable
常用:BitmapDrawable, ShapeDrawable , LayerDrawable , StateListDrawable不常用:LevelListDrawable , TransitionDrawable , InsetDrawable , ScaleDrawable , ClipDrawable , 自定义DrawableBitmap : 表示一张图片Shape:通过颜色来构造图形,有纯色和渐变效果的图形Layer: xml 标签 <layer-list>,表示
2021-11-27 01:21:26
128
原创 Android开发艺术探索五 RemoteView
一: RemoteView 的应用(都运行在系统的 SystemServer 进程)1.通知栏: NotificationManager notifycation.contentview = remoteview2.桌面小部件:AppWidgetProvider(本质是是一个广播) 需要在AndroidManifest 注册 receiver二:RemoteView 的内部机制(在其他进程中,显示并更新 view (只支持特定的...
2021-11-27 01:21:02
1448
原创 Android开发艺术探索四 View 工作原理
一.ViewRoot 和 DecorView二:理解MeasureSpec1.MeasureSpec2.LayoutParams三:View的工作流程1.measure2.layout3.draw四:自定义View1.自定义View 的分类2.自定...
2021-11-27 01:20:43
129
原创 Android开发艺术探索三 View 事件体系
一:基础知识View:所有控件的基类 1.View的位置参数: 2.MotionEvent和TouchSlop: MotionEvent: 手指触摸屏幕的一系列事件 TouchSlop:滑动的最小距离,和设备系统有关 3.VelocityTracker, GestureDetetor , Scroller: VelocityTrack...
2021-11-27 01:20:00
148
原创 Android开发艺术探索二 IPC机制
一:多进程模式二:IPC基础概念三:Android 中的 IPC 方式四:Binder 连接池五:IPC 方式选择
2021-11-27 01:19:15
167
原创 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
1183
原创 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
591
1
原创 第一行代码 (第三版) 第四,五章
lateinit 关键字(延迟初始化,使用这个有 空指针 风险)sealed 关键字(密封类,自动检查该密封类有哪些子类,并强制要求你将每一个子类所对应的情况全部处理) 密封类及其子类:只能定义在同一文件的顶层位置,不能嵌套在其他类中扩展函数:(最好定义成 顶层方法,这样可以让扩展函数拥有全局的访问域) 在不修改某个类源码的情况下,仍然可以打开这个类,向该类添加新的函数 (函数名前加 className) operator :运...
2021-04-02 16:57:25
201
原创 第一行代码 (第三版) 第三章
activity启动模式:singleTask: 栈内复用singleInstance:独立栈,最后关闭的acitivity标准函数:with: 连续调用同一个对象的多个方法时,让代码变得更加简洁(函数返回值为最后一行代码)run:在某个对象的基础上调用, 使用Lambda表达式中最后一行代码作为返回值返回apply:此函数无法指定返回值,而是会自动返回调用对象本身静态方法:object(单例类)companion object {}顶层方法@JvmStatic 注解.
2021-03-18 13:21:37
116
原创 第一行代码 (第三版) 第二章
语法糖:1.当一个函数中只有一行代码时,kotlin允许我们不必编写函数体,可以直接将唯一的一行代码写在函数定义的尾部,中间用等号连接。open(关键字):说明类可以被继承主构造函数,次构造函数:继承不加 “()”的情况:data (关键字):数据类(model), 重写了equals(), hashCode() , toString()object(单例类):集合:集合的函数式api: maxBy, filter, mapjava 函数式api:如果一个Java方法的
2021-03-15 14:47:20
135
原创 ndk 开发基础一 Android调用c源码
一.ndk环境配置 1.下载必要文件: NDK ; CMake 2.配置ndk路径 3.配置gradle(app)文件//------------------------------ ndk 配置-----------------------------------------------// ndk { // 设置支持的SO库架构 abiFilters 'arm64-v8a...
2020-09-15 12:04:37
332
原创 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
270
原创 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
130
原创 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
128
原创 binder 进程间的通信机制
Binder : android 进程间的通信机制 ; linux下 dev/binder 驱动 ; java的Binder.java 跨进程多进程的优势: 扩大内存 ; 危险隔离扩大内存:一个进程能申请的空间有限,可以通过多进程申请到更多内存。危险隔离:加载图片时,使用多进程能够防止主线程崩溃。binder的优势: binder 共享内存 ...
2020-07-26 21:10:51
184
原创 JVM 虚拟机
运行时数据区域线程共享的数据区:Method Area (方法区) ;Heap(堆)线程隔离的数据区:VM Stack(虚拟机栈) ; Native Method Stack (本地方法栈) ; Program Counter Register (程序计数器)程序计数器: 多线程线程切换并分配处理器,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。每条线程有独立的程序计数器,用于线程切换,记录线程的下一条指令,为了线程能恢复到正确的执行位置VM Stack : ja...
2020-07-18 18:28:33
112
原创 Android 版本适配 6~11
版本适配推荐博客:https://blog.youkuaiyun.com/qq_17766199/category_7174141.htmlandroid 6.0 : 权限动态申请(仅限危险权限)android 7.0 : 应用间共享文件(FileProvider); signature versions (v1,v2全部勾选) 解决方案: 鸿洋博客 https://blog.youkuaiyun.com/lmj623565791/article/d...
2020-07-12 12:39:34
509
原创 android 架构特点介绍
简单记录mvc:最早的架构。 movel:数据 view: 视图 controller: activity 缺点是:activity代码量大,拥挤,逻辑不清晰。activity耗时时间是5s,业务多程序容易被回收。 优点是:适合界面复杂的应用。mvp: 大量运用抽象工厂。model:数据 view:视图 presenter: 处理用户和Android端的逻辑交互。 缺点是:代码量多 优点是:逻辑简单,适合界面少的应用,中...
2020-06-23 12:07:06
254
原创 项目中使用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
870
原创 事件分发机制总结
借鉴博客:https://www.jianshu.com/p/38015afcdb58事件分发:由上至下事件处理:由下至上activity: dispatchTouchEvent ; onTouchEventviewGroup: dispatchTouchEvent ; onTouchEvent ;...
2020-01-03 15:20:48
167
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
661
原创 Bugly 1:版本更新
官网:https://bugly.qq.com/docs/user-guide/instruction-manual-android-upgrade/?v=20181014122344选择自动导入版本更新1.全量更新: 版本号 : 版本名 :版本号相同,判断版本名 检查更新:下次应用启动;用户手动更新( ...
2019-12-30 15:09:41
260
原创 极光推送2:别名,Registration ID
适用场景:向指定 单个人 推送信息,在进程保活期间执行客户端(功能主要实现人):别名:同个APP,不同设备,可以设置同一个别名,同时推送。实现:异地登录推送------登录界面(删除别名)-------登录成功(设置别名)弊端:结束进程,仍然可以推送服务端(功能主要实现人):Registration ID:一台设备一个Registration ID实现:Android端...
2019-12-27 15:06:52
1427
原创 极光推送
官网: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
660
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人