![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
小记
u010457514
这个作者很懒,什么都没留下…
展开
-
设计模式六大原则
总原则:开闭原则开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有的代码,实现一个热插拔的效果。想要达到这样的效果,我们需要尽量使用接口和抽象类等。1.单一职责原则不要存在多余一个导致类变更的原因,也就是说梅格雷应该实现单一的职责,如果不然,应该把类拆分。2.里氏替换原则(Liskov Substitution Principle)里氏替...原创 2019-10-12 16:45:05 · 140 阅读 · 1 评论 -
Could not resolve io.fabric.tools:gradle:1.24.1
错误信息解决办法buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.24.1' }}改成buildscript {...转载 2019-10-11 11:31:30 · 2063 阅读 · 0 评论 -
EventBus发送的消息,如何做到线程切换?
EventBus是一个机遇观察者模式的时间订阅/发布框架,利用EventBus可以在不同模块之间,实现低耦合的消息通信。EventBus使用简单且稳定,被广泛用在一些生产项目中。通常我们使用EventBus分发一些消息给消息的订阅者,除此之外我们还可以通过EventBus将消息传递到不同的线程中去执行,处理消息。本文结合源码分析EventBus切换线程的原理。EventBus切换线程在An...原创 2019-09-30 16:37:07 · 1368 阅读 · 0 评论 -
LeakCanary原理解析
简介LeakCanary是一款开源的内存泄漏检查工具,在项目中,可以使用它来检测Activity是否能够被GC及时回收。使用方式解析LeakCanary.install()方法的调用流程如下所示:Install方法如下: public static @NonNull RefWatcher install(@NonNull Application application) { ...转载 2019-09-19 17:28:39 · 152 阅读 · 0 评论 -
如何判断应用是在前台还是在后台运行
1、通过RunningTaskInfo类判断(需要额外权限)/** *判断当前应用程序处于前台还是后台 */ public static boolean isAppRunningForeground(final Context context) { ActivityManager am = (ActivityManager) context...原创 2019-09-19 14:05:26 · 1396 阅读 · 0 评论 -
getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()路径
存储介绍Android系统分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都比较小,外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足。一般我们存储内容都会放在外部存储空间里。使用过程注意事项:1.先判断SD卡是否可用,可用时优先使用SD卡的存储,不可用时用内部存储2.存储在SD卡上时,可以在SD卡上新建任意一个目录存放,也可以存放在应用程序内部文...原创 2019-09-17 10:37:46 · 1021 阅读 · 0 评论 -
HashMap、Hashtable、ConcurrentHashMap的原理与区别
Hashtable原创 2019-09-17 00:29:41 · 154 阅读 · 0 评论 -
final,finally,finalize的区别
finalfinal是一个修饰符也是一个关键字。被final修饰的类无法被继承。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。但是它指向的对象的内容是可变的。被final修饰的方法将无法被重写,但允许重载注意:类的private方法会隐式地被指定为final方法。一个类不能既被...原创 2019-09-12 13:57:34 · 183 阅读 · 0 评论 -
String转为Int 面试题
String转为Int是一个比较常见的面试题,但是要写出严谨的代码,要考虑的细节还是很多。主要有以下几点:1.String为空的时候;2.String无法转换为有效的Int的时候(包含非数字字符的时候怎么区分);3.String中包含’+‘或者’-‘的情况;4.String只包含’+‘或者’-'的情况;5.边界条件,最大正整数与最小负整数。下面给出完整代码如下所示:public cl...原创 2019-09-11 01:47:30 · 334 阅读 · 1 评论 -
Android studio 出现Gradle sync failed: EventQueue.isDispatchThread()=false Toolkit.getEventQueue()...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-09-06 09:21:55 · 2910 阅读 · 1 评论 -
不要在onResume中申请权限
最近遇见一个问题,在onResume中申请权限,比如申请定位权限,如下所示:@Override protected void onResume() { super.onResume(); requestPermission(); } @TargetApi(Build.VERSION_CODES.M) private void r...原创 2019-09-03 15:28:41 · 1578 阅读 · 0 评论