自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 史上最适合新手的Dagger2教程(一)基本注入

码字辛苦!转载请注明出处!Dagger2系列教程目录:史上最适合新手的Dagger2教程(一)基本注入史上最适合新手的Dagger2教程(二)对象注入史上最适合新手的Dagger2教程(三)模型与单例 史上最适合新手的Dagger2教程(四)带参注入史上最适合新手的Dagger2教程(五)命名、限定与延时加载0.前言Dagger2是今年5月份开始,突然火到一发不可收...

2018-07-25 16:23:54 1292

原创 史上最适合新手的安卓JNI教程

码字辛苦!转载请注明出处!0.前言记得第一次接触安卓JNI的时候,那叫一个苦啊,MK文件?不会写,JNI?不会写,Gradle配置?也不会写。时间一晃就过去3年了,Android Studio已经由当时的1.3到了现在的3.1,最新版本的Android Studio,再也不用手写MK文件,手写JNI了~只要你熟练掌握JAVA和C语言基础,十分钟拿下JNI,完全不是问题!那些上来...

2018-07-18 14:08:19 8242 12

原创 十分钟完成安卓MediaCodec视频解码

码字辛苦!转载请注明出处!0.前言MediaCodec是安卓自带的视频编解码工具,由于使用的是硬解码,其效率相对FFMPEG高出来不少。但由于部分厂商的解码器的设计,在某些手机上,H.264解码帧会缓存几帧再渲染,造成7帧左右的延迟现象。如果对解码实时性要求较高,可以通过减少IDR帧间隔来解决(三星的Exynos解码器除外)。首先不得不说,MediaCodec的使用相对于其他解码工...

2018-07-17 18:06:33 25197 32

原创 CSDN黑名单的使用方法,希望大家永远不需要用到这个功能~

CSDN黑名单的使用方法,希望大家永远不需要用到这个功能~

2022-09-12 18:04:11 1626 6

原创 Flutter TabBar 监听竟调用两次

码字辛苦!转载请注明出处!0.前言Flutter的TabViewController,并不会懒加载视图,在你创建TabBarView的那一刻起,所有的界面就被一股脑儿全部加载完了那么作为一个优雅的程序员,怎么能允许这种性能浪费呢!咔哒咔哒敲完TabController,Run完背脊一凉,发现事情并没有那么简单TabController的Listener竟然被调用了两次!!!1.解决方法小问题不多叭叭,加个判断,问题解决:tabController.addListener

2022-02-15 18:38:02 1770

原创 更新macOS Monterey后,Flutter页面崩溃、白屏

0.前言很多时候,使用MacOS开发的痛,只有真正用上才懂比如经常解锁屏幕后,外屏就点不亮的恶性BUG,任务托盘切换屏幕不顺畅啦,IDEA经常手敲代码都快敲完了,才慢吞吞的出代码提示,都是家常便饭这不,近日MacOS推出了代号Monterey的更新,又引入了一个新BUG...

2022-02-08 14:05:14 1303

原创 安卓TextView.setText卡顿优化

码字辛苦!转载请注明出处!0.前言最近博主在工作之余,抽空写了一个聊天机器人app,然而为了debug,不得不加入一个用于显示日志的页面。日志这种东西吧,懂得都懂,即便是做了日志转储,也免不了12小时后,日志文件会达到感人的1m大小,于是问题就来了,博主在使用了移步读取日志的情况下,仍然导致日志页面出现了1-2秒左右的卡死,而历经了长达一周的优化后,发现这个卡顿居然来自于TextView的setText方法!这让博主不得不再次对伟大的谷歌竖起了长拇指不过不要慌,既然博主跑来撰写博文,这.

2021-08-09 17:45:09 1599 3

原创 在Flutter中使用Webview打开网页

0.前言因为zhong suo zhou z1.配置安卓http明文传输权限打开flutter项目/android/app/src/main/AndroidManifest.xml

2021-06-15 11:37:43 7269 11

原创 一行代码完美解决ScrollView与RecyclerView、GridView、ListView、Expandablelistview的滑动冲突

码字辛苦!转载请注明出处!最近接到了产品一个看似很简单的需求,界面我设计为ScrollView嵌套ViewPager2嵌套Fragment嵌套Expandablelistview来展示,三下五除二写完,哦豁!什么破玩意儿,为啥滑不动!真就码代码一小时,修BUG一整天呗!我翻了无数的解决方案,找到了勉强能用的重写ScrollView的方法,贴一下,注意这不是最完美的解决办法: @Override public boolean onInterceptTouchEv

2021-03-30 14:51:00 355 2

原创 安卓大变天 ButterKnife被弃用:Resource IDs will be non-final in Android Gradle Plugin version 5.0

0.前言最近,AndroidStudio升级到了4.1版本,在使用ButterKnife时,使用BindView注解给出了这样的提示:Resource IDs will be non-final in Android Gradle Plugin version 5.0,WTF?一个月改一次API的老谷歌又来坑开发者了???是的,在未来,所有的R.id.*都会变成变量,尽管不知道这样做是出于什么原因。ButterKnife的作者也跳出来宣称,开发已经进入尾声,将不再更新并弃用,推荐我们使用

2020-10-22 11:03:57 15944 25

原创 快速实现安卓输入法!

码字辛苦!转载请注明出处!0、前言最近在做个远程终端,需要远程输入文字,但因为网络传输原因,经常发生点击变成长按,双击等等问题……于是产品提出了需求,做一个远程的输入法,我想着安卓十年,区区输入法应该早就资料一抓一把了吧————没想到啊没想到,安卓官方输入法文档写的稀烂,相关资料也是对着官方文档抄,根本没法用!!!气抖冷的我于是决定,自己写一篇真正意义上的文档了,哼!1、创建服务先创建一个继承InputMethodService的classpublic class Fa

2020-07-30 18:42:22 2658 3

原创 如何在安卓上优雅的搜索文件,解决The content of the adapter has changed but ListView did not receive a notification报错

码字辛苦!转载请注明出处!我们知道,在安卓上运行JAVA有严格的内存限制,不能像PC上那样肆无忌惮的使用递归和多线程,否则~OOM,经典不~那么,如何在安卓上优雅搜索文件呢?关键点就在于:1、取代递归2、适时终止上一个搜索线程3、在主线程中更新List和View4、避免线程中Activity对象造成的内存泄漏——那我们把需要搜索的文件目录记录下来循环遍历...

2019-04-03 10:43:56 238

原创 使用Retrofit下载文件,优雅的监听进度

码字辛苦!转载请注明出处!0、前言最近博主的项目需要做有进度监听的上传和下载功能,而令人发指的是,网上博文中,带进度下载居然要单独创建一个带拦截器的OkHttpClient,重写ResponseBody,简直复杂的令人作呕有没有!!!于是博主亲自尝试了一下,发现带进度的下载完全没必要重写ResponseBody!!!现在再回过头来看那些为了监听进度搞了一大堆花拳绣腿无用功的博文,我...

2019-02-20 16:11:57 1841 6

原创 获取用户已安装的APP列表及APK安装包

获取用户已安装的APP列表及APK安装包

2019-01-04 14:35:21 4737 2

原创 优雅的更新(update)GreenDAO表中的整列

码字辛苦!转载请注明出处!今天博主碰到一个需求,是一个页面的总开关,点击后要切换数据库中对应表的一整列:先上正确的更新方式,知道你们都是火急火燎的想直接拿走: public void switchAll(boolean isChecked) { //获取对象DAO ApplicationInfoDao application...

2018-11-29 17:03:16 8761 1

原创 两步让Retrofit使用FastJson解析:解决返回String报错:Expected a string but was BEGIN_OBJECT at line 1 column 2 path

博主最近遇到一个项目需求,需要对一个JSONString数据进行判断,根据type字段解析成不同的Object。 @POST("v1/recharge/new") Call<String> payNewPhone(@Body PayNewPhoneReq payNewPhoneReq);然而,就在我自信的完成了返回类型的修改后,Retrofit毫不留情的给了我...

2018-11-16 16:25:49 6650 4

原创 给安卓OKHTTP库添加HTTPS证书验证

网传的使用sslSocketFactory方法的验证方式已经过时了,因为使用这个方法会使用反射机制寻找X509信任管理类,消耗了不必要的性能。新的方法名称依然叫sslSocketFactory,但是会传入信任管理类数组中的第一条,这个博主已在OKHTTP的GITHUB样例源码中求证,请各位放心使用~这里放上博主封装的工具,支持传入字符串证书、传入RAW资源目录下的证书、批量添加证书和信任所...

2018-11-05 18:23:00 5092 4

原创 安卓应用创建快捷方式的最新操作(兼容安卓8.0)

在安卓8.0以前,如果需要给安卓APP创建快捷方式,需要使用到广播机制。而在最新的安卓8.0中,旧的广播创建快捷方式方式是已经过时甚至失效了的。而新的快捷方式使用了一个新的类:ShortcutManager,谷歌在抛弃旧机制的同时,在ShortcutManager上加了个兼容:ShortcutManagerCompat,使用它就能分分钟搞定原本繁琐的快捷方式创建了~那么不多废话,直接上...

2018-10-23 11:41:51 3901 2

原创 安卓如何获取APP的崩溃日志

安卓APP一旦发生任何报错,就会停止运行,这是令许多开发者头疼的问题,很多情况下,一些隐性BUG在测试部门通过,而在上架之后发生小面积崩溃,这时候的报错因为没有日志,导致BUG无从查起。那么,只能通过用户反馈消耗大量的人力和时间去复现它吗?其实只要在Application中插入一小段代码,就可以把完整的错误日志全部捕捉出来: //记录崩溃信息 f...

2018-08-02 17:25:12 7830

原创 史上最适合新手的Dagger2教程(五)命名、限定与延时加载

Dagger2系列教程目录:史上最适合新手的Dagger2教程(一)基本注入史上最适合新手的Dagger2教程(二)对象注入史上最适合新手的Dagger2教程(三)模型与单例 史上最适合新手的Dagger2教程(四)带参注入史上最适合新手的Dagger2教程(五)命名、限定与延时加载上节课我们讲到,有些类存在有参和无参两种构造方法,而这两种构造方法此时要用到同一个类下,怎么...

2018-07-26 18:28:23 997

原创 史上最适合新手的Dagger2教程(四)带参注入

Dagger2系列教程目录:史上最适合新手的Dagger2教程(一)基本注入史上最适合新手的Dagger2教程(二)对象注入史上最适合新手的Dagger2教程(三)模型与单例 史上最适合新手的Dagger2教程(四)带参注入史上最适合新手的Dagger2教程(五)命名、限定与延时加载前面我们讲解了构造方法中不带参数的各种注入方式,这节课,我们来学习构造方法中带参数的对象...

2018-07-26 15:53:12 1402 1

原创 史上最适合新手的Dagger2教程(三)模型与单例

Dagger2系列教程目录:史上最适合新手的Dagger2教程(一)基本注入史上最适合新手的Dagger2教程(二)对象注入史上最适合新手的Dagger2教程(三)模型与单例史上最适合新手的Dagger2教程(四)带参注入史上最适合新手的Dagger2教程(五)命名、限定与延时加载上节课的代码中,我们遇到一个问题:使用@Inject注入每次都会new一个无参的新对象。...

2018-07-26 11:22:32 917

原创 史上最适合新手的Dagger2教程(二)对象注入

Dagger2系列教程目录:史上最适合新手的Dagger2教程(一)基本注入史上最适合新手的Dagger2教程(二)对象注入史上最适合新手的Dagger2教程(三)模型与单例 史上最适合新手的Dagger2教程(四)带参注入史上最适合新手的Dagger2教程(五)命名、限定与延时加载0.检查作业对答案了对答案了,后面那排睡觉的,起来做笔记了!杠精类:pub...

2018-07-25 18:13:40 809

原创 安卓导入旧项目org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeDebugResour

码字辛苦!转载请注明出处!最近接到一个外快,需求很简单,于是就爽快答应了。拿到手上才发现,这是个大龄程序猿用eclipse写的旧项目,导入AS编译后,爆出了这样的错误:这里强调一下:网上流传的禁用AAPT2的方法是解决不了这个问题的!android.enableAapt2=false↑这是错误的解决方法 =====================罪魁祸首===...

2018-06-26 11:19:45 7974

原创 JAVA版本8u201与8u202的区别

码字辛苦!转载请注明出处!最近博主因为项目完成百无聊赖之际抢先体验了一把JDK11,成功导致项目跑不起来(幸好是测试环境,不然估计不能活着走出公司了)在回退版本的时候偶然发现JAVA放出了8u201与8u202两个版本,百度一波之后,在【Reddit】论坛上找到了老外们的解释与指路。 这是官方对于奇数版本与偶数版本区别的解释:从JDK版本7u71以后,JAVA将会在同一时间发布两个...

2018-05-24 15:55:24 54309 5

原创 安卓获取MAC地址的最新操作

码字辛苦!转载请注明出处!安卓6.0起对于权限的管理更为苛刻,很多开发者发现使用原API获取的MAC地址变成了02:00:00:00:00:00最近由于公司项目需要,搜罗了许多获取MAC地址的方法,最后完成了一个获取MAC地址的工具类,各位有相同麻烦的朋友直接复制粘贴到项目当中即可~首先添加权限:<uses-permission android:name="android.p...

2018-05-16 19:34:41 2771 1

原创 4招搞定greenDAO导致的各类崩溃问题

码字辛苦!转载请注明出处!1、元素必须包含主键,否则删除时会崩溃2、Id列必须使用Long(大写L),否则无法自增3、如果APP运行就崩溃,请添加混淆规则:-keep class org.greenrobot.greendao.**{*;}-keep public interface org.greenrobot.greendao.**-keepclassmembers class ...

2017-11-21 23:33:47 2196

空空如也

空空如也

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

TA关注的人

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