Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
沉迷打码的小凳子
glide
提交
d0546ba0
G
glide
项目概览
沉迷打码的小凳子
/
glide
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
glide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d0546ba0
编写于
6月 22, 2014
作者:
S
Sam Judd
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Pool and reuse GenericRequest objects.
上级
2d5dcec7
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
109 addition
and
22 deletion
+109
-22
library/src/main/java/com/bumptech/glide/GenericRequestBuilder.java
...c/main/java/com/bumptech/glide/GenericRequestBuilder.java
+2
-1
library/src/main/java/com/bumptech/glide/request/GenericRequest.java
.../main/java/com/bumptech/glide/request/GenericRequest.java
+98
-20
library/src/main/java/com/bumptech/glide/request/Request.java
...ary/src/main/java/com/bumptech/glide/request/Request.java
+2
-0
library/src/main/java/com/bumptech/glide/request/ThumbnailRequestCoordinator.java
...m/bumptech/glide/request/ThumbnailRequestCoordinator.java
+6
-0
library/src/test/java/com/bumptech/glide/request/GenericRequestTest.java
...t/java/com/bumptech/glide/request/GenericRequestTest.java
+1
-1
未找到文件。
library/src/main/java/com/bumptech/glide/GenericRequestBuilder.java
浏览文件 @
d0546ba0
...
...
@@ -457,6 +457,7 @@ public class GenericRequestBuilder<ModelType, DataType, ResourceType, TranscodeT
if
(
previous
!=
null
)
{
previous
.
clear
();
requestManager
.
removeRequest
(
previous
);
previous
.
recycle
();
}
Request
request
=
buildRequest
(
target
);
...
...
@@ -546,7 +547,7 @@ public class GenericRequestBuilder<ModelType, DataType, ResourceType, TranscodeT
private
<
Z
>
Request
buildRequestForDataType
(
Target
<
TranscodeType
>
target
,
LoadProvider
<
ModelType
,
Z
,
ResourceType
,
TranscodeType
>
loadProvider
,
float
sizeMultiplier
,
Priority
priority
,
RequestCoordinator
requestCoordinator
)
{
return
new
GenericRequest
<
ModelType
,
Z
,
ResourceType
,
TranscodeType
>
(
return
GenericRequest
.
obtain
(
loadProvider
,
model
,
context
,
...
...
library/src/main/java/com/bumptech/glide/request/GenericRequest.java
浏览文件 @
d0546ba0
...
...
@@ -16,6 +16,8 @@ import com.bumptech.glide.provider.LoadProvider;
import
com.bumptech.glide.request.target.Target
;
import
java.io.InputStream
;
import
java.util.ArrayDeque
;
import
java.util.Queue
;
/**
* A {@link Request} that loads a {@link Resource} into a given {@link Target}.
...
...
@@ -25,25 +27,26 @@ import java.io.InputStream;
* @param <Z> The type of the resource that will be loaded.
*/
public
class
GenericRequest
<
A
,
T
,
Z
,
R
>
implements
Request
,
Target
.
SizeReadyCallback
,
ResourceCallback
{
private
static
final
String
TAG
=
"Request"
;
private
final
int
placeholderResourceId
;
private
final
int
errorResourceId
;
private
final
Context
context
;
private
final
Transformation
<
Z
>
transformation
;
private
final
LoadProvider
<
A
,
T
,
Z
,
R
>
loadProvider
;
private
final
RequestCoordinator
requestCoordinator
;
private
final
A
model
;
private
final
Class
<
R
>
transcodeClass
;
private
final
boolean
isMemoryCacheable
;
private
final
Priority
priority
;
private
final
Target
<
R
>
target
;
private
final
RequestListener
<
A
,
R
>
requestListener
;
private
final
float
sizeMultiplier
;
private
final
Engine
engine
;
private
final
GlideAnimationFactory
<
R
>
animationFactory
;
private
final
int
overrideWidth
;
private
final
int
overrideHeight
;
private
static
final
String
TAG
=
"GenericRequest"
;
private
int
placeholderResourceId
;
private
int
errorResourceId
;
private
Context
context
;
private
Transformation
<
Z
>
transformation
;
private
LoadProvider
<
A
,
T
,
Z
,
R
>
loadProvider
;
private
RequestCoordinator
requestCoordinator
;
private
A
model
;
private
Class
<
R
>
transcodeClass
;
private
boolean
isMemoryCacheable
;
private
Priority
priority
;
private
Target
<
R
>
target
;
private
RequestListener
<
A
,
R
>
requestListener
;
private
float
sizeMultiplier
;
private
Engine
engine
;
private
GlideAnimationFactory
<
R
>
animationFactory
;
private
int
overrideWidth
;
private
int
overrideHeight
;
private
String
tag
=
String
.
valueOf
(
hashCode
());
private
Drawable
placeholderDrawable
;
private
Drawable
errorDrawable
;
...
...
@@ -54,7 +57,82 @@ public class GenericRequest<A, T, Z, R> implements Request, Target.SizeReadyCall
private
Engine
.
LoadStatus
loadStatus
;
private
boolean
isRunning
;
public
GenericRequest
(
private
static
final
Queue
<
GenericRequest
>
queue
=
new
ArrayDeque
<
GenericRequest
>();
@SuppressWarnings
(
"unchecked"
)
public
static
<
A
,
T
,
Z
,
R
>
GenericRequest
<
A
,
T
,
Z
,
R
>
obtain
(
LoadProvider
<
A
,
T
,
Z
,
R
>
loadProvider
,
A
model
,
Context
context
,
Priority
priority
,
Target
<
R
>
target
,
float
sizeMultiplier
,
Drawable
placeholderDrawable
,
int
placeholderResourceId
,
Drawable
errorDrawable
,
int
errorResourceId
,
RequestListener
<
A
,
R
>
requestListener
,
RequestCoordinator
requestCoordinator
,
Engine
engine
,
Transformation
<
Z
>
transformation
,
Class
<
R
>
transcodeClass
,
boolean
isMemoryCacheable
,
GlideAnimationFactory
<
R
>
animationFactory
,
int
overrideWidth
,
int
overrideHeight
)
{
GenericRequest
request
=
queue
.
poll
();
if
(
request
==
null
)
{
request
=
new
GenericRequest
();
}
request
.
init
(
loadProvider
,
model
,
context
,
priority
,
target
,
sizeMultiplier
,
placeholderDrawable
,
placeholderResourceId
,
errorDrawable
,
errorResourceId
,
requestListener
,
requestCoordinator
,
engine
,
transformation
,
transcodeClass
,
isMemoryCacheable
,
animationFactory
,
overrideWidth
,
overrideHeight
);
return
request
;
}
private
GenericRequest
()
{
}
@Override
public
void
recycle
()
{
loadProvider
=
null
;
model
=
null
;
context
=
null
;
target
=
null
;
placeholderDrawable
=
null
;
errorDrawable
=
null
;
requestListener
=
null
;
requestCoordinator
=
null
;
engine
=
null
;
transformation
=
null
;
animationFactory
=
null
;
isCancelled
=
false
;
isError
=
false
;
loadedFromMemoryCache
=
false
;
loadStatus
=
null
;
isRunning
=
false
;
queue
.
offer
(
this
);
}
private
void
init
(
LoadProvider
<
A
,
T
,
Z
,
R
>
loadProvider
,
A
model
,
Context
context
,
...
...
library/src/main/java/com/bumptech/glide/request/Request.java
浏览文件 @
d0546ba0
...
...
@@ -32,4 +32,6 @@ public interface Request {
* Returns true if the request has failed.
*/
public
boolean
isFailed
();
public
void
recycle
();
}
library/src/main/java/com/bumptech/glide/request/ThumbnailRequestCoordinator.java
浏览文件 @
d0546ba0
...
...
@@ -58,4 +58,10 @@ public class ThumbnailRequestCoordinator implements RequestCoordinator, Request
public
boolean
isFailed
()
{
return
full
.
isFailed
();
}
@Override
public
void
recycle
()
{
full
.
recycle
();
thumb
.
recycle
();
}
}
library/src/test/java/com/bumptech/glide/request/GenericRequestTest.java
浏览文件 @
d0546ba0
...
...
@@ -85,7 +85,7 @@ public class GenericRequestTest {
}
public
GenericRequest
<
Object
,
Object
,
Object
,
Object
>
getRequest
()
{
return
new
GenericRequest
<
Object
,
Object
,
Object
,
Object
>
(
loadProvider
,
return
GenericRequest
.
obtain
(
loadProvider
,
model
,
context
,
priority
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录