自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 源解 Glide V4.10.0

Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道(decode pipeline),以及自动的资源池技术。

2024-04-23 11:45:53 876

原创 Android电量/功耗优化指南

电能 = 电压 * 电流 * 时长模块电量(mAh) = 模块电流(mA) * 时长(h)系统电量优化红线规则华为电量优化红线规则。

2024-03-11 13:58:34 1585

原创 人工智能与大语言模型攻略

通常使用深度学习技术,如神经网络,来训练大量的文本数据。大语言模型能够理解和生成人类语言,具有强大的语言结构理解和生成能力。规模大:大量数据生成大量的参数。(大语言模型中,参数通常指神经网络中的权重和偏置)上下文学习:能够记住之前的对话或文本片段,并据此生成连贯且相关的回应或输出。遵循用户的指令:根据给定的提示或命令来生成相应的文本。循序渐进推理:能够根据一系列的提示或指令,逐步推导出最后的答案或结论。

2024-02-28 10:07:12 1183

原创 frp 内网穿透搭建指南

公司没有自建内网 VPN,项目出现问题只能来公司解决非常不方便。由于家里和公司都是使用的 Mac 电脑,所以只要实现内网穿透就可以直接使用 vnc 远程控制公司电脑了。目前市面上有很多内网穿透产品,例如:frp、ngrok、natapp、花生壳等。正好前段时间买了台腾讯云服务器,下面就来记录下如何搭建 frp 来实现内网穿透。

2024-02-22 12:22:01 1105 1

原创 Android 监听网络状态变化(无切换中间态版)

ConnectivityManager#registerNetworkCallback() 是监听所有网络变换的,监听范围广,但无法得知当前“系统默认网络”是什么,可以实现判断网络状态,但无法判断网络类型。广播监听 与 ConnectivityManager#registerDefaultNetworkCallback() 都是监听“系统默认网络”,所以可以实现网络状态与类型的判断,但都存在重复回调的情况,所以要做过滤处理,以及“系统默认网络”切换到普通网络时会有偶现短暂“无网络”状态,需要做延迟处理。

2024-01-16 10:19:30 2019

原创 Flutter 混合开发 - aar打包

项目接入 Flutter 后有两种方式,一种是 module 引入开发,一种是 aar 依赖开发。当前项目中在 Debug 阶段为了方便调试采用 module 开发,在发版时(即 Release 阶段)采用 aar 依赖引入。为了配合这种模式就需要在 release 阶段将 aar 上传至公司 maven 仓库中,但目前 Flutter 仅提供本地发布,所以下面基于官方脚本修改,实现上传至公司 maven。

2024-01-05 10:56:26 777

原创 Android低功耗蓝牙开发总结

记住一个核心:蓝牙传输非常不稳定,指不定啥时候就没响应或丢包了。

2024-01-05 10:45:38 1801

原创 Flutter 混合开发 - 动态下发 libflutter.so & libapp.so

明确只在打 release 包时才需要剔除(因为谁关心 debug 包包体积呀!确定剔除 Task 执行的时机。剔除要在 merge 所有 so 之后才行,通过查看 task 列表,发现 “mergeReleaseNativeLibs” 就是非常不错的时机。@Override//只在 release 变体下生效if (!//自定义 Gradle Task//指定自定义 Task 执行时机:mergeReleaseNativeLibs -> flutterSoDynamicRelease。

2024-01-02 14:42:07 2108 1

原创 再见2023,你好2024

再次感叹,时间过得飞快,又一年过去了。本文写于 2023年12月24日。

2024-01-02 13:51:21 789

原创 MV*系列架构模型

浅谈对 MVC、MVP、MVVM、MVI 的理解

2023-01-07 10:30:52 560

原创 Android Studio 插件 — 开发工具类搜集

随着代码量的不断增加,为了开发方便,提取出了各种工具类/方法,但由于没有查询方式,往往只能是谁加的谁知道用,而其他人由于不知道已有该工具类/方法,所以无脑又新建了一个。这就导致项目体积增大,并且可维护性大大降低。举个例子,项目有单位的处理的工具方法(例如大于1000显示K()大写),但其他人不知道又重新建了个方法,某天要求所有地方的单位都统一成k(小写),只能挨个功能搜索看用的那个方法处理的,这就出现嘞无用功,而且还容易遗漏。

2022-09-22 11:22:37 3137 1

原创 Jetpack 组件之 ViewModel 使用与浅析

ViewModel 是什么?官方解释:The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.个人理解: ViewModel 是 UI 和数据的桥接层,承担 UI 层(Activi

2021-06-19 17:10:17 245

原创 Jetpack 组件之 Lifecycle 使用与浅析

Lifecycle 是什么?官方解释:Lifecycle is a class that holds the information about the lifecycle state of a component (like an activity or a fragment) and allows other objects to observe this state.个人理解:Lifecycle 就是管理组件( Activity / Fragment )生命周期的一个工具(类),可以在其他

2021-06-05 21:25:42 263 1

原创 【设计模式】创建型(单例、工厂、建造)

修改记录修改时间备注新建20201.03.04设计模式文章集合: 设计原则-SOLID、DRY、KISS、YAGNI、LOD单例模式饿汉式在类加载期间,就已经将 instance 静态实现初始化好,可以保证 instance 实例的创建时线程安全的。不过也导致不支持延迟加载实例。public class IdGenerator(){ private IdGenerator(){} private AtomicLong id = new AtomicL...

2021-03-04 20:04:50 176 1

原创 【读书笔记】《软技能——代码之外的生存指南》

修改记录修改时间备注新建2021.02.171、将自己的职业当做一家企业需要你思考并做到以下几点:正在提供怎样的服务,以及如何营销想方法提升服务专注为哪一特定的客户或者行业提供服务集中精力成为一位专家,专门为某一特定类型客户提供专业的整体服务2、思考未来,设定目标在心中树立一个足够清晰的大目标将大目标分解成若干小目标将大目标写在每天必经之地,每日三省吾身——我在追求什么3、人际交往每个人都希望感到自己很重要。不要轻...

2021-02-17 12:32:29 217 3

原创 【设计模式】设计原则-SOLID、DRY、KISS、YAGNI、LOD

修改记录修改时间备注新建2021.02.09整理自极客时间-王争的设计模式之美(推荐购买学习)1. SOLID原则1.1 SRP(Single Responsibility Principle) 单一职责1.1.1 定义:一个类或模块只负责完成一个功能。理解:不要设计大而全的类,要设计粒度小、高性能单一的类。该原则的目的是为了实现代码高内聚、低耦合、提高代码复用性、可读性以及可维护性。1.1.2 以下场景可能会出现类没有指责单一:类中的代码行数、函数、属性是否过多...

2021-02-06 20:30:46 1609

原创 【踩坑记录】多语言切换在Androidx失效

修改记录修改时间新建2021.01.09快速定位与修复出现问题时的调用方式:public class I18nBaseActivity extends AppCompatActivity { @Override protected void attachBaseContext(Context newBase) { //切换多语言,然后将新生成的 context 覆盖给 attachBaseContext() Context con...

2021-01-09 21:30:40 821

原创 【踩坑记录】关于“保留两位小数”导致的Crash

最近在日常版本开发中,QA 发现某一功能国内版本没有问题,但是海外版本必现 Crash。当时收到Bug记录时一脸懵逼,同一套代码怎么会国内没问题,海外版本却必现 Crash 呢。找 QA 打印了 Crash 日志如下:07-22 21:20:33.409 16542 16542 E AndroidRuntime: FATAL EXCEPTION: main07-22 21:20:33.409 16542 16542 E AndroidRuntime: Process: com.xxx.xxxoverse

2020-07-25 12:30:35 677

原创 List 的 ForEach 可能导致 ConcurrentModificationException?

问题:ConcurrentModificationException 问题多出现在 List 的 forEach 或者 Iterator 循环中,调用 List 中的方法操作数据。例如://List Iterator 循环里操作数据public static void main(String[] args) { ArrayList<int> list=new Array...

2020-02-01 17:32:10 837

原创 一文普及 Git 使用与常用命令整理

闲言碎语 刚工作没几年,最开始使用的是 svn,感觉操作简单,就是多人开发的时候管理代码贼麻烦。后来换了新公司后使用 Git 管理代码,发现这玩意简直不要太好用,尤其是可以建分支,减少了工作中很多麻烦的操作。于是乎我变成了 Git 的忠实粉丝。我使用的是 Win 电脑,最开始不知道 Git 命令,也懒得去敲,所以一直使用 sourceTree 来操作(也推荐小白先用该工具理解操作的含义后再考虑用...

2019-08-11 13:47:50 202

原创 微信小程序授权、组件化、集成IM实战记录

       最近参与了公司开发的一个微信小程序项目,也是第一次真正实战微信小程序。由于之前没有怎么专门学习 html 和 css,所以页面交互与显示就交给了公司前端工程师,我主要负责 js 逻辑开发。在这里简单总结一下开发中用到的知识,同时也记录一下“微信小程序集成腾讯云IM”,实现简单的文字聊天。之前写过一篇“微信小程序开发小结”,里面写了一些比较细节上...

2019-04-09 16:19:16 1795

原创 MVPCommonLib 实现快速搭建开发MVP APP

最近在 github 上上传了我的第一个小项目 MVPCommonLib,正确的说应该是 Android Module。该 Module&nbsp;是通过 Kotlin&nbsp;开发,包含搭建 MVP+Retrofit+RxJava&nbsp;需要的基础类以及日常开发中的部分工具类,希望能帮助大家更加快速的搭建 APP。接下来让我们看一下该 Module&nbsp;中都有哪些东西吧。Modul...

2019-02-26 22:59:20 419

原创 带你了解 getLayoutInflater().inflate() 与 View.inflate() 的区别(实例+源码)

BRVAH(BaseRecyclerViewAdapterHelper)这个框架我想做Android的应该都比较熟悉了,如果不熟悉的可以百度,这里就不啰嗦了。最近在使用该框架给横向 RecyclerView 添加底部布局时出现了问题:添加的底部布局(footer_view)的 layout_width 和 layout_height 都是写死的值,但是当 add 进去之后滑动 RecyclerV...

2019-02-24 15:59:11 4095

原创 Glide加载默认图片后setImageBitmap无效问题

Glide.with(this).load(“aaaaaaa”).apply( RequestOptions().placeholder(R.drawable.logo)).into(civ_avator)上面这行代码,由于 url 地址无效,会加载默认占位图 R.drawable.logo 。当在这个 Activity 或者 Fragment 中直接给这个 civ_avator 设置图片时...

2018-11-15 11:18:18 1970

转载 ijkplayer 编译详解

本文转自 ijkplayer编译so库真没那么难 1.如何使用ijkplayer官方:https://github.com/Bilibili/ijkplayerbuild.gradle添加下述依赖引用即可:dependencies { # 对于大部分的设备来说已经够用了 compile 'tv.dan...

2018-08-17 11:25:09 1374

转载 postman接口测试和压力测试

前言现在很多公司写后端代码和前端代码已经分工很明确了,前后端把接口定义好,然后各自写各自的代码就可以了。那么对于服务端的开发人员来说,写好了代码后,对外提供了API,这时候没有页面可以调用调试,如果等着客户端写完代码再测试的话,那样工作的效率是及其低下的。那么服务端要学会模拟客户端的调用,来调试自己的代...

2018-08-09 16:57:44 3663 1

原创 Android面试题总结(二)

1. BroadcastReceiver 两种注册方式 &nbsp;&nbsp; 静态注册:在 AndroidManifest.xml 中通过 &lt;receive&gt; 注册。常驻广播,不受生命周期影响,即使应用关闭,仍可接收到广播。&lt;receiver //此广播接收者类是myBroadcastReceiver android:name=".myBroadca...

2018-06-20 14:18:11 225

原创 Android面试题总结(一)

1. overload 与 override 区别 &amp;amp;nbsp; &amp;amp;nbsp; overload(重载) 与 override(重写)都体现了 Java 的多态性,但是 overload 是一个类的多态性体现,override 是父类与子类之间多态性的体现。 &amp;amp;nbsp; &amp;amp;nbsp; overload:同一个类中定义多个方法,方法名相同,但参数类型或参数个数或参数的顺序不同...

2018-06-17 18:45:20 267

原创 WebView WebViewClient 拦截URL在华为6.0与其他版本上的兼容区别

前提: 最近在项目中碰到 WebViewClient 的 shouldOverrideUrlLoading 方法,在部分机型中失效情况。(项目中使用的是 WebView封装框架–AgentWeb)问题:调用 WebViewClient 的 shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 方法时,在 安卓5.1...

2018-05-21 10:12:50 1703

转载 Android 控件阴影实现

转自:Reiser实验室 https://www.jianshu.com/p/bcbd0769e7ac———————————————————————————————————— 让 View 产生阴影有以下 4 种方式:控制 elevation使用 OutlineProvider使用 9 图使用 MD 风格的控件,如 CardView,F...

2018-05-14 13:55:05 16644 2

原创 Spring定时服务

第一步,修改 spring 配置 xml 文件①.<beans>中添加xmlns:task="http://www.springframework.org/schema/task"②.xsi:schemaLocation="中添加http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/ta

2017-12-19 19:13:09 305

原创 自动生成0001到000Z的编码规范

最近项目中有个需求,新增时要生成一个ID,规范是:从0000开始,到0009时,下一个为000A,直到000Z,然后进一位再递增,同时要剔除”I”、”O”、”Z”。 例如: 新增一条数据,在数据库中的id应该为0001,再新增一条数据时,数据库中的id应该为0002,以此类推。 思路:id可以通过ASCII来转化。每次新增都要id都要递增,就要把之前生成的id存起来,然后下次新

2017-12-16 11:23:51 1467

原创 动态更改应用桌面图标

基础部分: activity-alias:可以用于创建多个不同的入口 android:enabled:默认为 true,创建多个入口时,先修改为 false。 android:icon:应用图标 android:label:应用名称 android:name:activity-alias 的别名 android:targetActivit...

2017-12-04 15:44:13 423

原创 自定义View笔记(三) --- ViewDragHelper

注:该笔记是整理学习鸿洋大神自定义View系列博客的部分知识点。ViewDragHelper 可以用于自定义 ViewGroup 中子 View 的拖动等效果。 使用方式: 1.创建实例 在构造方法中调用ViewDragHelper.create(this, 1.0f, new ViewDragHelper.Callback(){ }); 创建实例时,需要传入三个参...

2017-10-20 15:10:19 316 1

原创 自定义View笔记(二) ---深入理解自定义属性

注:该笔记是整理学习鸿洋大神自定义View系列博客的部分知识点。一、TypedArray 与 AttributeSet 获取 View 属性的区别 AttributeSet获取方式:public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); int count = a...

2017-10-20 14:55:30 408

原创 自定义View笔记(一)

注:该笔记是整理学习鸿洋大神自定义View系列博客的部分知识点。自定义View(自定义控件)四大步骤:1. 自定义View的属性2. 在View的构造方法中获取自定义的属性3. 重写onMesure() 不是选项4. 重写onDraw()自定义View属性/** 在res/values下建立一个attrs.xml文件 */&lt;resources&g...

2017-10-20 14:44:48 224

原创 AIDL的实例讲解

前言: 关于AIDL的介绍与原理不会在这里赘述。在这里通过一个简单“加法计算器”实例来告诉你AIDL到底是怎么用的。正文: 1、在项目包中创建一个.aidl文件 2、在新建的.aidl文件中实现要做的逻辑方法。这里要做一个加法处理。interface IAdditionService { /** * Demonstrates some basic types...

2017-10-11 12:03:32 574

原创 RxJava学习笔记(一)

该笔记通过“RxJava 详解”学习记录学习RxJava之前需要了解“观察者模式”RxJava四个基本概念1、Observable — 被观察者 2、Observer — 观察者 3、Subscribe — 订阅 4、事件RxJava有两种事件:1、普通事件 onNext() 2、特殊事件 onCompleted() — 时间队列完结。当不会再...

2017-09-22 17:46:01 363

原创 实现Android透明状态栏(或叫沉浸式状态栏)

最近接触到一个项目,发现了一个实现透明状态栏的第三方jar包,感觉挺好用的,跟大家分享一下。github地址:https://github.com/jgilfelt/SystemBarTintAS导入地址:compile ‘com.readystatesoftware.systembartint:systembartint:1.0.3’在项目中使用时,可以封装成一个方法:pub...

2017-09-19 13:53:26 779

转载 Android权限大全

访问登记属性   android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限获取错略位置android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米获取精

2017-08-08 14:37:12 315

AIDL的实例讲解

AIDL的一个简单实例,主要用来理解AIDL是干什么用的,怎么用的。

2017-10-16

空空如也

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

TA关注的人

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