Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
MVPArms
提交
fc074292
M
MVPArms
项目概览
门心叼龙
/
MVPArms
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
MVPArms
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fc074292
编写于
8月 29, 2018
作者:
P
passin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve RepositoryManager
上级
709d591e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
39 deletion
+15
-39
arms/src/main/java/com/jess/arms/integration/RepositoryManager.java
...ain/java/com/jess/arms/integration/RepositoryManager.java
+15
-39
未找到文件。
arms/src/main/java/com/jess/arms/integration/RepositoryManager.java
浏览文件 @
fc074292
...
...
@@ -46,6 +46,7 @@ import retrofit2.Retrofit;
*/
@Singleton
public
class
RepositoryManager
implements
IRepositoryManager
{
@Inject
Lazy
<
Retrofit
>
mRetrofit
;
@Inject
...
...
@@ -63,13 +64,9 @@ public class RepositoryManager implements IRepositoryManager {
/**
* 根据传入的 Class 获取对应的 Retrofit service
*
* @param service
* @param <T>
* @return
*/
@Override
public
<
T
>
T
obtainRetrofitService
(
Class
<
T
>
service
)
{
public
synchronized
<
T
>
T
obtainRetrofitService
(
Class
<
T
>
service
)
{
return
createWrapperService
(
service
);
}
...
...
@@ -87,9 +84,8 @@ public class RepositoryManager implements IRepositoryManager {
final
T
service
=
getRetrofitService
(
serviceClass
);
// 执行真正的 Retrofit 动态代理的方法
return
((
Observable
)
getRetrofitMethod
(
service
,
method
)
.
invoke
(
service
,
args
))
.
subscribeOn
(
Schedulers
.
io
());
})
.
subscribeOn
(
Schedulers
.
single
());
.
invoke
(
service
,
args
));
}).
subscribeOn
(
Schedulers
.
single
());
}
// 返回值不是 Observable 的话不处理
final
T
service
=
getRetrofitService
(
serviceClass
);
...
...
@@ -100,22 +96,14 @@ public class RepositoryManager implements IRepositoryManager {
private
<
T
>
T
getRetrofitService
(
Class
<
T
>
service
)
{
if
(
mRetrofitServiceCache
==
null
)
{
synchronized
(
this
)
{
if
(
mRetrofitServiceCache
==
null
)
{
mRetrofitServiceCache
=
mCachefactory
.
build
(
CacheType
.
RETROFIT_SERVICE_CACHE
);
}
}
mRetrofitServiceCache
=
mCachefactory
.
build
(
CacheType
.
RETROFIT_SERVICE_CACHE
);
}
Preconditions
.
checkNotNull
(
mRetrofitServiceCache
,
"Cannot return null from a Cache.Factory#build(int) method"
);
Preconditions
.
checkNotNull
(
mRetrofitServiceCache
,
"Cannot return null from a Cache.Factory#build(int) method"
);
T
retrofitService
=
(
T
)
mRetrofitServiceCache
.
get
(
service
.
getCanonicalName
());
if
(
retrofitService
==
null
)
{
synchronized
(
service
)
{
if
(
retrofitService
==
null
)
{
retrofitService
=
mRetrofit
.
get
().
create
(
service
);
mRetrofitServiceCache
.
put
(
service
.
getCanonicalName
(),
retrofitService
);
}
}
retrofitService
=
mRetrofit
.
get
().
create
(
service
);
mRetrofitServiceCache
.
put
(
service
.
getCanonicalName
(),
retrofitService
);
}
return
retrofitService
;
}
...
...
@@ -126,30 +114,18 @@ public class RepositoryManager implements IRepositoryManager {
/**
* 根据传入的 Class 获取对应的 RxCache service
*
* @param cache
* @param <T>
* @return
*/
@Override
public
<
T
>
T
obtainCacheService
(
Class
<
T
>
cache
)
{
public
synchronized
<
T
>
T
obtainCacheService
(
Class
<
T
>
cache
)
{
if
(
mCacheServiceCache
==
null
)
{
synchronized
(
this
)
{
if
(
mCacheServiceCache
==
null
)
{
mCacheServiceCache
=
mCachefactory
.
build
(
CacheType
.
CACHE_SERVICE_CACHE
);
}
}
mCacheServiceCache
=
mCachefactory
.
build
(
CacheType
.
CACHE_SERVICE_CACHE
);
}
Preconditions
.
checkNotNull
(
mCacheServiceCache
,
"Cannot return null from a Cache.Factory#build(int) method"
);
Preconditions
.
checkNotNull
(
mCacheServiceCache
,
"Cannot return null from a Cache.Factory#build(int) method"
);
T
cacheService
=
(
T
)
mCacheServiceCache
.
get
(
cache
.
getCanonicalName
());
if
(
cacheService
==
null
)
{
synchronized
(
cache
)
{
if
(
cacheService
==
null
)
{
cacheService
=
mRxCache
.
get
().
using
(
cache
);
mCacheServiceCache
.
put
(
cache
.
getCanonicalName
(),
cacheService
);
}
}
cacheService
=
mRxCache
.
get
().
using
(
cache
);
mCacheServiceCache
.
put
(
cache
.
getCanonicalName
(),
cacheService
);
}
return
cacheService
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录