- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 Java垃圾回收
当我们的内存不足的时候,会进行GC,也就是垃圾回收,收回占用的内存空间。所谓的垃圾,就是不会再被使用的对象,那么我们如何识别一个对象时存活的呢?那就是判断这个对象节点是否可达,这个判定可达的算法就是根索引算法。根索引算法 所谓根索引算法就是GC通过“GC Roots”节点开始,从上往下进行搜索,搜索走过的路径叫做“引用链”。当一个对象到引用链没有引用链相连时,表示这个对象不可达。也就会被判...
2018-04-03 17:14:43
222
原创 理解java.util.concurrent包(二)
下面我们来看java.util.concurrent.locks包: 1.AbstractOwnableSynchronizer、AbstractQueuedLongSynchronizer、AbstractQueuedSynchronizerAbstractQueuedLongSynchronizer和AbstractQueuedSynchronizer是AbstractOwnab...
2018-02-13 16:55:38
419
原创 理解java.util.concurrent包(一)
Java 5.0开始 提供了 java.util.concurrent 包,在此包中增加了在并发编程中很常用的实用工具类。 我们先看java.util.concurrent.atomic中的类: 以上的类均是使用了CAS算法来保证数据的原子性,所谓CAS即Compare and Set。CAS是一种无锁的非阻塞算法的实现,它的思想很简单:三个参数,一个当前内存值V、旧的预期值A、即...
2018-02-09 16:01:03
850
原创 Volley源码解析
Volley是Google推出的轻量级异步网络请求和图片加载框架,适用于数据量小,通讯频繁的网络操作。 下面我们来看Volley最基本的用法:RequestQueue queue= Volley.newRequestQueue(this); StringRequest request=new StringRequest(url, new Response.Listener() {
2018-01-23 16:48:00
206
原创 Glide源码解析(三)
终于到了我们的into方法啦,前面两篇分别讲了with和load方法,没有看的请戳Glide源码解析(一)及Glide源码解析(二)。话不多说,首先我们知道load方法返回的是一个GlideRequest对象,但是我们并没有在这个类中找到into方法,那么看看她的父类,GlideRequest继承于RequestBuilder,在这个类中我们看到了into方法@NonNull public
2018-01-17 18:59:40
825
原创 Glide源码解析(二)
上面一篇我们讲了Glide的with方法,没有看的请戳Glide源码解析(一), 这篇我们来看Glide的load方法,with方法返回的是一个GlideRequests,那么load肯定是在这个类里面,GlideRequests继承自RequestManager(管理和请求Glide的请求类,可以通过Activity和Fragment的生命周期自动停止和从起请求)。接下来我们看load方法,Gl
2018-01-17 14:08:40
409
原创 Glide源码解析(一)
Glide源码解析系列文章基于Glide4.5.0,源码看了很多遍,慢慢理清,文章链接如下: Glide源码解析(一) Glide源码解析(二) Glide源码解析(三) Glide最基本的使用如下:Glide.with(this) .load(R.raw.large_giphy_logo) .into(giphyLogoView);1、with
2018-01-16 18:59:27
1750
原创 android虚拟按键NavigationBar的判断
下面方法可判断手机是否有虚拟按键功能:public boolean hasNavigationBar(Activity activity) { DisplayMetrics dm = new DisplayMetrics(); Display display = activity.getWindowManager().getDefaultDisplay();
2016-11-02 19:19:10
5790
原创 Android Facebook分享以及一些注意事项
Android Facebook分享以及一些注意事项在分享之前,你需要做以下几件事情:添加Facebook的SDK到你的应用中去dependencies { compile 'com.facebook.android:facebook-android-sdk:4.7.0'} 注意:Facebook支持的最小SDK版本为15,所以有两种方法:第一、将minSdkVersion设置为15
2015-12-29 16:07:45
7525
4
原创 万能ListView适配器
普通的ListView适配器仅仅适应一个listview,然而一个项目中可能不止一个listview,那么,对于每一个listview都要重写一个Adapter,如果需要的listview有很多,代码量是很大的。同时,每新增一个,都要重写一个适配器,很不方便。那可不可以极大地减少代码量呢,答案当然是可以的,下面就来讲解一下:首先,需要一个listview,代码如下: xmlns:
2015-08-09 21:15:33
617
原创 js实现鼠标点击获取相对于整个页面的位置
JS 获取图片相对坐标 function forward(event){ var e = event || window.event; var scrollX = document.documentElement.scrollLeft || document.
2015-06-17 10:48:14
3921
原创 Android用程序在桌面创建app快捷方式
首先,在AndroidManifest.xml添加权限然后创建一个CreateShut类,作为创建桌面快捷方式的工具public class CreateShut { public CreateShut(Activity activity) { // intent进行隐式跳转,到桌面创建快捷方式 Intent addIntent = new Intent("com.android
2015-03-24 10:21:47
763
转载 android中Service和Thread的区别
1.服务不是单一的进程。服务没有自己的进程,应用程序可以不同,服务运行在相同的进程中。2.服务不是线程。可以在线程中工作。一.在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务。同样是在后台运行,不需要交互的情况下,如果只是完成某个任务,之后就不需要运行,而且可能是多个任务,需需要长时间运行的情况下使用线程。二.如果任务占用CPU时间多,资源大的情
2015-02-10 23:55:56
492
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人