安卓开发日记
文章平均质量分 82
一个有梦想的码农
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从源码认识协程
通过源码了解协程的实现原理原创 2023-02-13 01:02:20 · 609 阅读 · 0 评论 -
Aspectj基础原理解析
AspectJ的原理解析原创 2022-06-26 17:43:00 · 2338 阅读 · 0 评论 -
第三方依赖库中kotlin代码提示/*compiled code*/
在AS某些版本中,例如Android Studio Arctic Fox | 2020.3.1(新版狐狸那个版本),在看第三方依赖库代码时,出现了这种问题,java部分的代码可以看到完整的方法实现,而kotlin部分的代码在方法实现中提示/*compiled code*/点Download Sources后,依赖无法看到方法的具体实现,经过摸索后,发现原来是编译器的问题,依赖库在打包时,可以选择生成两种jar包,一种是带完整代码和注释的,命名为xxx-source.jar;一种是仅仅带编译后.cl.原创 2021-10-26 01:22:16 · 5097 阅读 · 2 评论 -
记 · 从零到Jitpack发布,搭建一个MVVM基础框架第三方依赖库
一、搭建MVVM基础框架ViewModel+Databinding+Repository(使用flow返回),主要通过这三大部分搭建最最最基础的MVVM模式。MVVM基础是通过MVP框架演化而来的,如下图原创 2021-08-13 17:05:04 · 469 阅读 · 0 评论 -
安卓中的Gradle、task任务和自定义插件库
1、androidStudio中build.gradle的结构和作用目录结构:root |--build.gradle (1) |-- app |-- build.gradle (2) |-- module |-- build.gradle (3) |-- settings.gradle (4)(1)根目录下的build.gradle这个文件主要负责整个项目的插件管理,和设置每个子模块的通用配置bui...原创 2021-05-13 18:47:23 · 762 阅读 · 3 评论 -
安卓opengl相关例子代码合集
代码库地址:https://github.com/cy-cyx/OpenGlDome项目中现有的功能模块说明1、fbo文件下使用帧缓冲区,使用一个纹理作为帧缓冲的颜色缓冲区注意:安卓的纹理的原点是在左上角,fbo的纹理的原点是在左下角2、blend文件下混合模式的使用3、light文件下冯氏光照模型分为 环境光 反射光 镜面高光4、mvp文件下视角-模式矩阵5、texture文件下纹理贴图要注意纹理单元和纹理的概念,纹理默认绑定纹理单元06、shadow文件阴影贴图两步渲原创 2021-03-09 17:11:24 · 450 阅读 · 0 评论 -
ActivityManagerService之onStop()的调用流程,及为何会最迟会延迟10秒执行?
这篇文章通过追踪AMS源码(api28),走一遍执行onStop()的流程,先来一张流程图:从源码开始追踪(省略无关的代码):原创 2021-02-19 16:26:11 · 1389 阅读 · 0 评论 -
ActivityManagerService之startActivity · 一 相关类的基本介绍
1、ActivityThread和ApplicationThread(内部类)、H(内部类)ActivityThread管理主线程中的执行申请流程,安排和执行activity,作为活动进行广播和其他操作经理要求ApplicationThread是ActivityThread,主要用于和AMS的跨进程通信。可以这样大致理解,通过调用ActivityManager.getService()的方法,我们可以向AMS申请开始一个新的Activity,AMS通过我们传过ApplicationThread.a.原创 2021-01-21 02:08:23 · 378 阅读 · 0 评论 -
ActivityManagerService之startActivity · 二
这篇文章通过追踪AMS源码(api28),走一遍调用startActivity的代码执行流程,先来一张流程图:从源码开始追踪(省略无关的代码):1.Activity#startActivity2.Activity#startActivityForResultpublic void startActivityForResult(@RequiresPermission Intent intent, int requestCode, @Nullable Bundle原创 2021-01-21 02:08:02 · 1124 阅读 · 4 评论 -
记使用腾讯TIM开发聊天通讯遇到的问题及解决方案
目录一、V1和V2在ITIMMessage上接口不同,V1支持多个Elem,V2不支持,对应的解决方案,使用java反射二、向Message塞入多个Elem时,语音Elem顺序会发生变化三、IM在app存活时,切出去修改权限后,返回app,出现找不到Native方法问题四、IM的IMMessage时间戳的单位是秒而不是毫秒,这个就有点奇怪了,需要手动处理一下五、IM的提供消息列表,头像更新不及时一、V1和V2在ITIMMessage上接口不同,V1支持多个Elem,V2不支持,对应的原创 2020-07-04 23:38:46 · 2676 阅读 · 0 评论 -
略解:AOP 切面编程 —— 动态代理
一、首先要讲动态代理,先要从代理模式讲起// 定义公共接口public interface IShop { public void buy();}public class MyBuy implements IShop { @Override public void buy() { System.out.print("真正的买东西"); ...原创 2020-05-05 14:41:32 · 340 阅读 · 0 评论 -
EventBus 3.0 略解
记录的EventBus架构中用到的技巧大体的架构——事件总线和观察者模式,BusEvent中所有事件发放和订阅都是在一个单例中去实现的,最基础的代码结构如下,EventBus在这个基础上去优化的public class EventCenter { private static EventCenter instance; private static final Obje...原创 2020-04-19 01:21:34 · 237 阅读 · 0 评论 -
使用PhishTank api检测钓鱼网站,提示You must supply a URL to use this function
解决方法:http://checkurl.phishtank.com/checkurl/ 将http换成https即可,就这样简单,就这样坑PhishTank官方文档地址https://www.phishtank.com/index.php简单介绍一下PhishTank,PhishTank是一个检测钓鱼网站的免费api,它运作方式就是,收集世界各地的人提交可疑的钓鱼网站,形成一个钓...原创 2020-04-01 02:05:46 · 3603 阅读 · 3 评论 -
ThreadLocal的源码解析
涉及到类:Thread、ThreadLocal、ThreadLocalMap(ThreadLocal的内部类)含义:这些变量与普通变量不同,每个访问一个线程(通过其get或set方法)的线程都有其自己的,独立初始化的变量副本。 ThreadLocal实例通常是希望将状态与线程关联的类中的私有静态字段(例如,用户ID或交易ID)例子:private static class Threa...原创 2020-02-16 22:42:33 · 189 阅读 · 0 评论 -
设计模式——STATE(状态模式)
这是属于设计模式中的对象行为模式之一在TCPConnection中维护着一个TCPState,在不同状态下,维护着一个不同的TCPState,例如:stablished状态下,维护着对应TCPstablished,实现该状态下对应的Open(),Close(),Acknowledge()。如果切换状态,其实就是切换TCPState对象,这样对应的Open(),Close(),Acknowl...原创 2020-02-08 02:03:58 · 266 阅读 · 0 评论 -
java.lang.ClassCastException: android.os.BinderProxy cannot be cast to ......
这个错误出现在bindService后,从回调获得对应服务的Ibinder对象,然后强转成我们自己实现的Binder对象时,出现的类型错误。而且这个错误出现的前提是,我是在一个新的进程启动一个Service <service android:name=".Service1" android:process=".text"/><!--如果不配置默认在主...原创 2020-01-20 01:22:37 · 7736 阅读 · 0 评论 -
faceBook、mopub、谷歌的广告创收文档收集
faceBook 文档链接mopub 文档链接谷歌 文档链接注意:1、测试谷歌效果,在文档提供广告id中以供测试(以上三款广告创收,后台统计广告点击数据是通过广告id收集,故接入无需像国内第三方sdk接入一样需要认包名、key之类的东西)2、faceBook在后台申请广告,要慎重!!!极容易被封号,如果不想你号没了,慎重慎重!!3、后台注册账号需要营业执照,个人玩家在...原创 2019-11-28 12:03:04 · 683 阅读 · 0 评论 -
解决Error:android-apt plugin is incompatible with the Android Gradle plugin问题
当Android Studio升级到3.0后,添加apt插件就会出现以下错误:解决方法就是:使用annotationProcessor进行配置1、将Project下的build.gradle中将对应插件的classpath注释掉2、同时也将app下的build.gradle下对应应用插件去掉,一般在前几行3、将依赖中的apt的改为annotationProcessor只需要以上三步就能完美解决问题原创 2018-01-18 00:45:06 · 8500 阅读 · 0 评论 -
Android Studio编译报错:com.android.tools.aapt2.Aapt2Exception
错误提示如下:解决方法:在gradle.properties文件下添加一句android.enableAapt2=false我在网上搜一下,错误的原因是:Gradle 3.0后,AAPT工具默认开启,而AAPT工具不能够识别处理某些类型的文件,在错误提示中也可以看得出,出现错误发生在Gradle的处理资源任务中,所以直接将其关闭就可以避免错误的出现。...原创 2018-02-13 01:27:30 · 920 阅读 · 0 评论 -
大致总结一下 安卓各大版本的差异(安卓4以上版本)
每次去面试,面试官或多或少都会问到这问题,所以,我百度一番,大致总结一下我找到的结果。在安卓4以前的版本不作为讨论对象,在安卓4之前的版本,谷歌一度想闭源安卓,可惜失败了,而且安卓那时的开放性不高,可设计性也不高。而且手机普及性不高,流量少,市场趋势还没有趋向移动端发展。一、安卓4.X1、引入“Holo”界面,在设计追求简约上面充满了浓浓的工程师风格,慢慢脱离苹果风格,而且在往后版本中...原创 2018-03-12 19:14:40 · 22876 阅读 · 1 评论 -
Dagger2的学习笔记 · 一
今天玩一下Dagger2,个人第一感觉就是,一种本来挺好理解的东西,硬生生被玩着复杂和变得难以理解了,哈哈,也有可能是自己技术水平不够,不说废话了,下面开始记录一下我的学习心得。Dagger2,官方的说明是A fast dependency injector for Android and Java,翻译成国语就是“Android和Java的快速依赖注入器。”一、什么是依赖注入下面先看一个例子,比...原创 2018-03-21 23:52:32 · 239 阅读 · 0 评论 -
笔记:Google Play应用内购买结算(In-app Billing)的接入
Google Play应用内购买结算(In-app Billing)最近公司有需求在Google渠道上加入Google支付 ,所以照着Google官方文档,写了一个Dome,同时也写这篇博客记录一下希望可以帮到有需要的人。官方开发文档链接:https://developer.android.com/google/play/billing/api (需要自备梯子)注意:In-app Bi...原创 2018-08-03 00:48:43 · 16170 阅读 · 3 评论 -
Android Studio报错:Only fullscreen opaque activities can request orientation保留Activity透明背景的解决方式
最近,在公司负责了app与社交模块的对接工作,用一个透明背景的Activity作为中间跳转Activity。在接完所有接口后,突然一个bug出现,说点击icon跳转蹦了!蹦了!附带一张日志 我试了一下,一脸懵逼,问他们怎么玩出来这个bug,拿了他们手机,确实必现这个bug,试了好几台手机,发现8.0以上的测试机有些必现这个bug。 从日志中,字面...原创 2018-10-09 23:57:15 · 2631 阅读 · 2 评论 -
安卓app接入推送的较优解决方案(包括厂商通道、集成推送的使用分析)
推送功能,是每一个app都会开发的功能,它可以很大程度的提高app的使用率和用户的保活率。但是问题来了,由于现在安卓系统越来越成熟,对某些权限的限制越来越大,而且各大厂商的定制系统对后台app监控做得也越来越好,如果自己实现一条后台线程来和后台服务器保持长连接,基本前台app退出不到几分钟就被杀死了,所以我选择通过接入第三方的推送SDK来实现推送功能的实现。 在给公司产品接入推送时...原创 2019-12-19 17:13:15 · 11725 阅读 · 7 评论 -
结合服务端实现断点续传
本人第一次写博客,才疏学浅,希望大牛能指出不足,如有错,请勿喷什么是断点续传? 断点续传是指,支持从文件上次中断的地方开始传送数据,而并非是从文件开头传送。这样做的优点是,如果在传输一个比较大的文件,发生连接超时错误时,只要客户端记录下已经接受的文件的大小,下次连接时,告诉服务器上次接受了多少,服务器就能跳过你已经接受部分继续传输,而你客户端只要将其追加在上次保存文件位置之后原创 2018-01-07 22:41:34 · 3053 阅读 · 0 评论
分享