自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

落叶Ex的博客

为无为,事无事,味无味。上善若水。

  • 博客(80)
  • 资源 (2)
  • 收藏
  • 关注

原创 Kotlin 泛型in/out 草稿

限制泛型类,的范围,仅可作为消费者使用,也就是仅能作为入参,不能作为返回值。

2024-02-26 14:38:54 277

原创 【bug记录】Some kotlin libraries attached to this project were compiled with a newer kotlin

由于高版本As存在bug,退回到低版本,报错Some kotlin libraries attached to this project were compiled with a newer kotlin。

2023-05-18 16:38:54 506

原创 Android 不自动生成BuildConfig 解决方法

今天无意中发现在新项目里无论怎么make、build、sync都无法生成BuildConfig,真的是大项目写久了很多基础都不清楚了。

2023-05-10 09:42:21 1457

原创 Android四大组件-BroadcastReceiver

如果您的应用以 API 级别 26 或更高级别的平台版本为目标,则不能使用清单为隐式广播(没有明确针对您的应用的广播)声明接收器,但一些。在我写这篇文章的时候市面上主流Android版本已经是Android 12了,因此简单理解就是,现在不支持所有静态广播的注册,由于静态广播的大量滥用,尤其是国产流氓APP,Android不得不一步步限制广播的使用。可以看到和我们预料的一样,确实是每一次广播都会产生新的对象,因此应该避免使用。出于这点的理解,监听发送频繁的广播会生成和销毁大量的对象?

2023-04-04 15:59:26 341

原创 Android全屏对话框

全屏对话框实现

2022-12-30 10:58:22 583

原创 Flutter 环境搭建笔记

flutter 环境搭建关键步骤

2022-07-06 18:21:36 688

原创 Glide setDefaultRequestOptions 源码分析

Glide源码分析一、现状以下为一次Glide图片加载典型用法,会将所需相关配置写入 requestOptions 对象,通过 setDefaultRequestOptions 方法写入自定义配置。 RequestOptions requestOptions = RequestOptions.skipMemoryCacheOf(true).diskCacheStrategy(DiskCacheStrategy.NONE).d

2022-04-25 14:42:42 691

原创 Unable to add window -- token null is not valid; is your activity running 源码梳理解读

经过前后两次的分析,短短的一个方法调用却涉及到非常多的应用生命周期知识,可见理解AMS和WMS对我们开发中遇到的一些实际问题的根源排查确实能起到很大的作用,因此有时间确实还是应该多读系统源码。

2021-10-22 17:13:01 1614

原创 关于Glide加载图片自动转circleCrop问题

遇到一个很灵异的现象,记录。开发中遇到使用Glide加载图片,本来矩形图片加载为圆形。以下为代码:fun ImageView.load(path: Any) { if (path is Int) { this.setImageResource(path) return } Glide.with(context) .load(path) .dontAnimate() .diskCacheStrategy

2021-09-14 15:31:43 818 2

原创 JMM & JVM 内存模型

JMM & JVM 内存模型JMMJMM 定义了 Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的...

2019-09-10 09:26:55 376 2

原创 了解 Binder 看这一篇就够了

Binder一. 前言笔者一直坚信,在不介绍上下文的情况下直入主题就是在耍流氓,只有建立好完善的知识体系后才能更好的理解和记忆相关内容。因此在介绍Binder之前,先来梳理一下大致的脉络。二. 进程和IPC2.1 进程在 Android 中,可以简单的把进程看作是 JVM 虚拟机,每个进程就是一个独立的虚拟机,它拥有自己特定的资源,例如内存空间。多个进程之间的内存是不共享的,就像平行世界...

2019-08-26 14:03:12 1271 1

原创 Android AIDL 入门

声明 AIDL 接口。创建多进程服务并实现 AIDL 接口。绑定服务,通过 AIDL 生成的 Binder 实例进行多进程交互。而这其中的难点其实也就是集中在系统编译 AIDL 之后,为我们自动实现的 Binder 那部分逻辑里面了,但这部分逻辑其实不用太过深究也能满足大部分的操作,想自己基于 Binder 实现跨进程交互的童鞋可以研究下这部分源码,本篇文章由于侧重点不同便不作解析。

2019-08-01 16:51:17 448 1

原创 Git 实用命令

统计代码行数// 查看个人指定时期内代码行数,注意将 --author="user.name" 替换成自己的用户名git log --since="2018-07-16" --before="2019-02-14" --author="user.name" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc +=...

2019-07-23 16:43:56 134

原创 kotlin lambda由浅入深

Lambda本来是将lambda这块内容一起放在kotlin高级语法里面的,但是由于内容实在太多了,特意提出来单独写。lambda表达式,简称为lambda,本质上就是可以传递给其他函数的一小段代码。原生Java语言在Java8的时候引入了lambda的概念,kotlin中进一步加深了对lambda的支持。基础意义在代码中存储和传递一小段行为是常有的任务,但是以往的Java中并不支持直...

2019-07-17 11:34:21 276

翻译 C语言指针从入门到放弃

C语言指针从入门到放弃部分引用自让你不再害怕指针常见类型说明//这是一个普通的整型变量int p; //首先从P 处开始,先与*结合,所以说明P 是一个指针,然后再与int 结合,说明指针所指向的内容的类型为int 型.所以P是一个返回整型数据的指针int *p; //首先从P 处开始,先与[]结合,说明P 是一个数组,然后与int 结合,说明数组里的元素是整型的,所以P 是一个...

2019-07-15 16:26:57 446

原创 Git 多项目管理之奇淫技巧

Git 多项目管理之奇淫技巧随着项目业务的丰富,结构层次的复杂,单一的项目管理手段已经显得越来越力不从心。尤其是插件化开发、热修复盛行的今天。以下介绍两种我个人比较推荐的 git 多项目管理的方式。RepoAndroid 使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,它是一个Python脚本,对Git部分命令进行封装...

2019-07-15 16:18:23 2173

原创 Android 编译 time out 终极解决方案

身为一个内陆 Android 开发者,由于各种你懂得原因,不可避免的需要用到网络代理,而各种网络代理软件常常会带来一些莫名其妙的问题,其中最坑爹的莫过于编译依赖时发生 time out,以下是总结出来的几种修复方案。AndroidStudio首先最容易想到的就是 IDE 上的网络代理设置:如果按照上图所示设置了依然不行请看下一步。gradle.properties这个文件直接决定了该项...

2019-06-18 17:15:55 2558 2

原创 Android 列表曝光数据统计全面解析

列表曝光统计开发越往后走,越发觉察到数据的宝贵,所谓量变产生质变,即便是一些平时看上去无足轻重的数据一旦量上去了加以分析也会是一比巨大的财富。文章目录列表曝光统计需求整理曝光统计思路分析列表控件曝光项获取曝光时机架构设计实现内部实现外部实现结语列表可以说是当下互联网产品中最最最常见的呈现形式了,几乎所有内容都可以用列表的方式进行展示,同时也是最好的方式没有之一。当一个产品规模到达一定量...

2019-06-13 16:30:27 3130

原创 公共资源命名分析

公共资源命名分析带 * 代表重要成分开头 *为了区分公共资源和普通资源,同时也是为了方便代码中查看,以特定关键字开头如:hcb资源分类(可选)资源主要分为4种大类别,由于Android本身资源文件会有文件夹区分,可以省略。color 缩写crdimens 缩写dmstyle 缩写stthemes 缩写tm使用分类 *不同资源下可能存在不同使用场景的情况,例如dimen...

2019-06-05 10:21:23 234

原创 Can't build android. Execution failed for task ':generateJsonModelDebug' 踩坑记录

Can’t build android. Execution failed for task ‘:generateJsonModelDebug’ 踩坑记录最近在使用 Cmake 进行 NDK 编译的时候发生了这样一个错误:Can't build android. Execution failed for task ':generateJsonModelDebug'。之后被这个错误困扰了很长一段时...

2019-05-07 10:35:01 11883 5

原创 快速读懂 Fragment 与 Activity 的关系

Fragment 和 Activity 关联源码梳理文章目录Fragment 和 Activity 关联源码梳理FragmentActivityFragmentControllerFragmentContainerFragmentHostCallbackFragmentManagerFragmentTransationFragmentActivity继承自Activity,支持 suppor...

2019-04-23 17:44:09 912

原创 'FragmentHostCallback.getHandler()' on a null object reference

Attempt to invoke virtual method ‘android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()’ on a null object reference最近写的一个动态权限库中用到了Fragment进行权限的请求和管理,但是在上线后发现bugly爆了一个null指针的问题闲...

2019-04-12 14:42:51 3095

原创 startActivityForResult无法回调

Android中常常需要用到startActivityForResult()方法来获得Activity回执信息的场景。但有时不注意就会导致onActivityResult()不被调用,或者调用时机错误。以下总结开发中遇到过的两种情况:Fragment在fragment作为调用者使用时需要注意,Fragment有自己的一套API而不是通过其父类API进行调用的,因此调用自己的API时需要重写自己...

2019-01-21 15:06:32 1026

原创 Android 各版本新特性介绍

Android 各版本新特性介绍5.0~9.0Lollipop 5.0/5.1Welcome to Android 5.0 Lollipop—the largest and most ambitious release for Android yet!欢迎使用Android 5.0 Lollipop - Android史上最大,最雄心勃勃的版本!Material designMate...

2018-10-15 17:22:55 3920

转载 Android后台保活套路分析

Android后台保活套路分析原文作者:D_clock爱吃葱花链接:https://www.jianshu.com/p/63aafe3c12af來源:简书基于个人理解进行了部分删减补充保活手段当前业界的Android进程保活手段主要分为 黑、白、灰 三种,其大致的实现思路如下:黑色保活:不同的app进程,用广播相互唤醒(包括利用系统提供的广播进行唤醒)白色保活:启动前台Serv...

2018-10-15 14:16:09 2676 1

原创 Android存储权限之深入浅出

Android文件存储及权限解析Android中常见的存储方式有SharedPreferences、Sqlite、文件IO存储、云存储、ContentProvider等。其中IO存储最为灵活,适用场景也多。这里就不同文件路径和其对应的权限进行分析。Android系统分区首先我们需要知道Android的系统分区结构,熟悉Android系统和刷机爱好者应该知道,Android中主要分为以下...

2018-10-09 16:20:29 6007 1

原创 Activity 异常生命周期

Activity异常重建调用onSaveInstanceState保存Activity,在onStop之前,正常终止不会调用该方法。重建时通过onRestoreInstanceState,将之前保存的bundle作为参数同事传递给onRestoreInstanceState和onCreate。主要用于恢复布局状态,具体来说,每个View都有onSaveInstanceState和onResto...

2018-10-09 13:32:40 589 1

原创 Java常用设计模式

Java常用设计模式设计模式是对某一类问题的最优解决方案,熟练使用设计模式可以有效提高我们的代码质量和性能以及节省我们开发迭代过程中的工作量。Java中通常我们人为有23种设计模式,以下将列举在开发中比较实用的几种进行讲解和分析。单例模式使用场景当需要某个类仅存在一个实例优点更加方便快捷的访问方式,节省不必要的性能开销,便于管理。思路要保证仅存在一个实例就需要隐藏掉自身本来的...

2018-10-08 16:27:07 332 1

原创 Android适配刘海屏沉浸式状态栏的一些坑

在国内做Android开发真的不容易,国内的深度定制“安卓”总能时不时的给你来几个“惊喜”。起因18年简直是刘海元年,所有手机都在跟风刘海屏,甚至每个厂商还有自己的一套适配规范。我的初始需求很简单,就是做一个全屏现实的页面,一般情况下只需要开启Android规范的全屏模式就好:<item name="android:windowFullscreen"&am

2018-09-07 17:31:31 17199 11

原创 Android仿iOS底部弹出菜单ActionSheet

由于产品是个果婊,有时候为了统一app风格,需要被迫使用ios风格的系统控件,比较常见的就是ios 的底部弹出菜单,在网上找了很久都没有找到还原度很高的,就自己动手写了,为了以防万一以后再有这类需求,这里把大致实现思路和代码献上,有需要的自己copy就行了。成品图:UI层级 具体都写在图上了,考虑到性能因素,viewGroup继承自FrameLayout,conten...

2018-08-30 16:09:34 8408 3

原创 Android滑动关闭Activity

#定制Android滑动关闭Activity 现在手机屏幕越来越大,而页面的退出按键通常设置在屏幕左上角,这就导致了当单手操作时用户体验及其不好。虽然也能通过实体按键返回和现在流行的全面屏手势解决,但是感觉会很生硬,这里就定制一个用户体验极佳的滑动关闭功能。写在前面相信大多数人日常刷各种爱啪啪的时候都有使用过滑动关闭,我也是因为用了觉得很舒服才决定写这篇文章。对于这个功能实...

2018-06-15 13:01:20 4460

原创 Android拍照录像框架Camera2使用简介

Camera2框架使用简介 在Android 21时Google更新了以往的摄像头类库Camera,取而代之的是Camera2。作为更新版本,Camera2具有更强功能的同时也增加了我们使用的困难性。核心类CameraManager:作为整个框架的入口,用于初始化其他类,本身意义不大,使用也很简单。CameraCharacteristics:通过CameraManager...

2018-05-16 16:40:45 2525

原创 基于WebRTC搭建直播平台

基于WebRTC搭建直播平台 直播可以说是近年来最火的互联网项目,各大直播平台如雨后春笋般先后兴起,转眼间主播这一行业也成为最赚钱的代名词。那我们就来从0开始搭建一个直播平台吧。WebRTCWebRTC,名称源自网页实时通信(Web Real-Time Communication)。是一个支持网页浏览器进行实时语音对话或视频对话的技术,谷歌于2010年收购获得。2011年5月...

2018-03-30 17:50:06 13657 7

原创 Android使用Jdbc连接远程数据库

Android使用Jdbc连接远程数据库 众所周知,Android是基于Java进行编写,并且其核心类库中也包含了大部分JDK的类库。因此理论上Java能实现的功能在Android上都是可行的。其中就包括了调用服务器端数据库。导包在AS上gradle能帮助我们轻松完成导包的工作。至于包的来源可以在mavan仓库进行检索。 implementation group: ...

2018-03-30 11:13:24 1621

原创 Kotlin领域特定语言(DSL)

Kotlin领域特定语言(DSL)DSL是什么对笔者来说DSL是一个既熟悉又陌生的词,总感觉经常看到但是又不知道它具体是什么。为了便于理解就要提到编程语言,对于这个我们就再熟悉不过了,比如Java、kotlin都属于编程语言,而DSL全称为“领域特定语言”。以下为两者的对比:编程语言:有一系列足够完善的能力来解决几乎所有能被计算机解决的问题。DSL:专注在特定任务,或者说领域上,并...

2018-03-30 10:19:40 1301

原创 Android 机型适配之百分比适配 ConstraintLayout

Android 机型适配之百分比适配 ConstraintLayout 由于Android的品类繁杂,机型适配向来是一个难题,常见的通过LinearLayout+RelativeLayout的方式进行适配具有较大的局限。而相比之下,百分比适配就强大很多了。

2018-03-14 15:07:21 18258 7

原创 从零开始打造垂直SeekBar

从零开始打造垂直SeekBar 偶然中需要使用到垂直的seekbar控件,却发现居然原生没有提供,本来打算直接将控件进行简单的rotation,结果需求要自定义seekbar的样式,而样式是一张固定长宽和方向的图片,直接旋转有各种莫名其妙的问题,嫌麻烦就自己手写一个好了。顺便写个简单的功能性自定义View的教程。市面上已经实现的垂直Seekbar一开始是打算在网上找个实现好的...

2018-03-02 14:31:19 355

原创 Java 基本数据类型内存占用

Java 基本数据类型内存占用整型 类型 存储需求 bit数 取值范围 byte 1字节 1*8 (-2的31次方到2的31次方-1) short 2字节 2*8 -32768~32767 int 4字节 4*8 (-2的63次方到2的63次方-1) long 8字节 8*8 -128

2018-01-17 10:52:06 1226 3

原创 常见Unicode编码范围

常见Unicode编码范围 经常我们会用到判断某个字符或者字符串是否包含中文,英文,特殊符号等等。这时候可以通过判断Unicode所在区间来确定某个字符所处类型。当然可以通过直接判断Unicode码,但是鉴于习惯,以下提供的是Unicode码对应的数字区间。毕竟字符的本质也就是通过二进制进行存储编码的而已。汉字:[0x4e00,0x9fa5](或十进制[19968,40869])

2018-01-17 10:35:10 18282 1

原创 Kotlin高级语法

Kotlin高级语法委托类委托当一个类继承于另一个类或者实现某个接口,我们需要在该类中重写或者实现对应的方法,为了代码简练或者其他原因我们会用到委托的思想,也就是让别的类来帮助我们完成这些事情,在Kotlin中对委托进行了原生的支持,用by关键字实现。//将Collection的方法委托给c对象完成class DelegateCollectionT>(val c: Coll

2018-01-12 16:51:40 2407

6.0权限请求框架

Android 6.0权限请求框架 包含用户拒绝权限申请后跳转系统设置

2017-10-11

通过网络请求框架

Android基于Retrofit通用网络请求框架 及RxJava写法

2017-04-25

空空如也

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

TA关注的人

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