android博文精选
文章平均质量分 87
android博文精选。
Luckie stone
Android应用开发。
展开
-
okhttp3缓存设置及拦截器的使用
OkHttp是由Square发布的一个HTTP client,它支持高速缓存服务器响应.缓存:如果服务器支持缓存,请求返回的Response会带有这样的Header:Cache-Control, max-age=xxx,这种情况下我们只需要手动给okhttp设置缓存就可以让okhttp自动帮你缓存了。这里的max-age的值代表了缓存在你本地存放的时间。OkHttpClient ok...原创 2019-06-19 06:25:05 · 2421 阅读 · 1 评论 -
Android上的蓝牙经典与蓝牙低能耗(BLE)–提示和实施步骤
蓝牙经典与蓝牙低能耗(BLE)–您的Android项目选择哪一种?查看实施步骤,了解蓝牙经典和BLE之间的区别。你想在可穿戴设备和智能手机之间建立连接吗?了解Android上蓝牙经典和蓝牙低能耗(BLE)的可能性,并了解更多实施过程的基本步骤:请求许可和特征,获取BluetoothDevice对象,以及连接到蓝牙设备(GATT&RFCOMM)。经典蓝牙–对短距离非常有效。蓝牙低能耗–功耗低达100倍。原创 2023-02-16 17:47:29 · 642 阅读 · 0 评论 -
学习Kotlin之泛型实化
接下来就是神奇的地方了,Intent接收的第二个参数本来应该是一个具体Activity的Class类型,但由于现在T已经是一个被实化的泛型了,因此这里我们可以直接传入T::class.java。然而不同的是,Kotlin提供了内联函数的概念,内联函数中的代码会在编译的时候自动被替换到调用它的地方,这样的话就不存在泛型类型擦除的问题了。bar()是一个带有泛型类型的内联函数,foo()函数调用了bar()函数,在代码编译之后,bar()函数中的代码将可以获得泛型的实际类型。首先,该函数必须是内联函数。...转载 2022-08-27 15:46:43 · 764 阅读 · 0 评论 -
一种极低成本的Android屏幕适配方式
如果我们想在所有设备上显示完全一致,其实是不现实的,因为屏幕高宽比不是固定的,16:9、4:3甚至其他宽高比层出不穷,宽高比不同,显示完全一致就不可能了。但是通常下,我们只需要以宽或高一个维度去适配,比如我们Feed是上下滑动的,只需要保证在所有设备中宽的维度上显示一致即可,再比如一个不支持上下滑动的页面,那么需要保证在高这个维度上都显示一致,尤其不能存在某些设备上显示不全的情况。同时考虑到现在基本都是以dp为单位去做的适配,如果新的方案不支持dp,那么迁移成本也非常高。...转载 2022-08-27 15:39:57 · 391 阅读 · 0 评论 -
Android仿百度贴吧客户端Loading小球
前言使用百度贴吧客户端的时候发发现加载的小动画挺有意思的,于是自己动手写写看。此篇文章用到如下知识点:1)、自定义View的测量2)、自定义View属性的自定义及使用3)、Path绘制贝塞尔曲线4)、Canvas的裁剪5)、用ValueAnimator控制动画6)、Canvas文字居中好了,开始正文!一、准备工作1、效果图loading小球2、动画拆...转载 2018-01-31 15:31:27 · 568 阅读 · 0 评论 -
什么是HTTPS协议?
HTTP协议全称Hyper Text Transfer Protocol,翻译过来就是超文本传输协议,位于TCP/IP四层模型当中的应用层。HTTP协议通过请求/响应的方式,在客户端和服务端之间进行通信。这一切看起来很美好,但是HTTP协议有一个致命的缺点:不够安全。HTTP协议的信息传输完全以明文方式,不做任何加密,相当于是在网络上“...转载 2019-06-24 06:47:57 · 665 阅读 · 1 评论 -
Android高效加载大图、多图解决方案,有效避免程序OOM
我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小。比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。我们可以通过下面的代码看...转载 2018-07-01 06:09:55 · 239 阅读 · 0 评论 -
安卓Handler当做内部类,导致内存泄露的问题
this handler should be static or leaks might occur How to Leak a Context: Handlers & Inner ClassesContext是怎么泄露的:Handlers & Inner ClassesConsider the following code:考虑下面的代码public...转载 2018-08-20 06:35:14 · 518 阅读 · 0 评论 -
聊一聊Android的消息机制
1概述在Android平台上,主要用到两种通信机制,即Binder机制和消息机制,前者用于跨进程通信,后者用于进程内部通信。从技术实现上来说,消息机制还是比较简单的。从大的方面讲,不光是Android平台,各种平台的消息机制的原理基本上都是相近的,其中用到的主要概念大概有:1)消息发送者;2)消息队列;3)消息处理循环。示意图如下:图中表达的基本意思是,消息发送者通过某种方...转载 2018-09-06 22:52:55 · 443 阅读 · 0 评论 -
EventBus3.0注意事项
1、父类中定义的订阅方法不能被重写比如你在父类中定义了一个订阅方法@Subscribe(threadMode = ThreadMode.MAIN)public void onEvent(Item item) {}那么不能在子类中重写该方法,否则一旦我们调用EventBus.getDefault().regist(this)后,EventBus就会查询当前类及其父类中的订阅方法,...原创 2018-06-30 06:28:07 · 384 阅读 · 0 评论 -
自定义控件三部曲之动画篇(七)——ObjectAnimator基本使用
一、概述1、引入上几篇给大家讲了ValueAnimator,但ValueAnimator有个缺点,就是只能对数值对动画计算。我们要想对哪个控件操作,需要监听动画过程,在监听中对控件操作。这样使用起来相比补间动画而言就相对比较麻烦。 为了能让动画直接与对应控件相关联,以使我们从监听动画过程中解放出来,谷歌的开发人员在ValueAnimator的基础上,又派生了一个类ObjectAnimator...转载 2019-01-16 21:41:50 · 318 阅读 · 0 评论 -
Android 之采用execSQL和rawQuery方法完成数据的添删改查操作
使用SQLiteDatabase操作SQLite数据库Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQue...原创 2019-06-24 06:46:44 · 4339 阅读 · 0 评论 -
APP的启动过程(附图)
点击桌面APP图标时,Launcher的startActivity()方法,通过Binder通信,调用system_server进程中AMS服务的startActivity方法,发起启动请求 system_server进程接收到请求后,向Zygote进程发送创建进程的请求 Zygote进程fork出App进程,并执行ActivityThread的main方法,创建ActivityThrea...原创 2019-08-10 04:46:34 · 827 阅读 · 0 评论 -
Android OpenGL ES (三)基本框架
一.视图组件 GLSurfaceViewAndroid上用于显示OpenGL视图,一般是使用GLSurfaceView,一个继承自SurfaceView的组件。它的渲染绘制在一个单独的线程中,而非主线程。GLSurfaceView一般是结合一个GLSurfaceView的内部接口类Renderer来使用。Renderer类负责渲染图形图像,而GLSurfaceView负责触摸事件等逻辑的处...转载 2019-08-08 21:03:23 · 645 阅读 · 0 评论 -
Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
前言为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问和activity生命周期的管理,而本文将会分析这两个复杂问题的解决方法。需要说明的一点是,我们不可能调起任何一个未安装的apk,这在技术上是无法实现的,我们调起的apk必须受某种规范的约束,只有在这...转载 2018-08-19 07:28:15 · 162 阅读 · 0 评论