Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
MVPArms
提交
ef6cdd8f
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 搜索 >>
未验证
提交
ef6cdd8f
编写于
11月 02, 2018
作者:
J
JessYan
提交者:
GitHub
11月 02, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #247 from passin95/master
添加一个公用的线程池
上级
939cfea6
28529000
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
54 addition
and
24 deletion
+54
-24
arms/src/main/java/com/jess/arms/di/component/AppComponent.java
...rc/main/java/com/jess/arms/di/component/AppComponent.java
+11
-6
arms/src/main/java/com/jess/arms/di/module/ClientModule.java
arms/src/main/java/com/jess/arms/di/module/ClientModule.java
+11
-10
arms/src/main/java/com/jess/arms/di/module/GlobalConfigModule.java
...main/java/com/jess/arms/di/module/GlobalConfigModule.java
+30
-7
demo/src/main/java/me/jessyan/mvparms/demo/app/GlobalConfiguration.java
...java/me/jessyan/mvparms/demo/app/GlobalConfiguration.java
+2
-1
未找到文件。
arms/src/main/java/com/jess/arms/di/component/AppComponent.java
浏览文件 @
ef6cdd8f
...
...
@@ -18,7 +18,6 @@ package com.jess.arms.di.component;
import
android.app.Activity
;
import
android.app.Application
;
import
android.content.Context
;
import
com.google.gson.Gson
;
import
com.jess.arms.base.delegate.AppDelegate
;
import
com.jess.arms.di.module.AppModule
;
...
...
@@ -31,13 +30,11 @@ import com.jess.arms.integration.ConfigModule;
import
com.jess.arms.integration.IRepositoryManager
;
import
com.jess.arms.integration.cache.Cache
;
import
com.jess.arms.utils.ArmsUtils
;
import
java.io.File
;
import
javax.inject.Singleton
;
import
dagger.BindsInstance
;
import
dagger.Component
;
import
java.io.File
;
import
java.util.concurrent.ExecutorService
;
import
javax.inject.Singleton
;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
okhttp3.OkHttpClient
;
...
...
@@ -129,6 +126,14 @@ public interface AppComponent {
*/
Cache
.
Factory
cacheFactory
();
/**
* 返回一个全局公用的线程池,适用于大多数异步需求。
* 避免多个线程池创建带来的资源消耗。
*
* @return {@link ExecutorService}
*/
ExecutorService
executorService
();
void
inject
(
AppDelegate
delegate
);
@Component
.
Builder
...
...
arms/src/main/java/com/jess/arms/di/module/ClientModule.java
浏览文件 @
ef6cdd8f
...
...
@@ -18,27 +18,25 @@ package com.jess.arms.di.module;
import
android.app.Application
;
import
android.content.Context
;
import
android.support.annotation.Nullable
;
import
com.google.gson.Gson
;
import
com.jess.arms.http.GlobalHttpHandler
;
import
com.jess.arms.http.log.RequestInterceptor
;
import
com.jess.arms.utils.DataHelper
;
import
dagger.Binds
;
import
dagger.Module
;
import
dagger.Provides
;
import
io.rx_cache2.internal.RxCache
;
import
io.victoralbertos.jolyglot.GsonSpeaker
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.TimeUnit
;
import
javax.inject.Named
;
import
javax.inject.Singleton
;
import
dagger.Binds
;
import
dagger.Module
;
import
dagger.Provides
;
import
io.rx_cache2.internal.RxCache
;
import
io.victoralbertos.jolyglot.GsonSpeaker
;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
me.jessyan.rxerrorhandler.handler.listener.ResponseErrorListener
;
import
okhttp3.Dispatcher
;
import
okhttp3.HttpUrl
;
import
okhttp3.Interceptor
;
import
okhttp3.OkHttpClient
;
...
...
@@ -102,7 +100,7 @@ public abstract class ClientModule {
@Singleton
@Provides
static
OkHttpClient
provideClient
(
Application
application
,
@Nullable
OkhttpConfiguration
configuration
,
OkHttpClient
.
Builder
builder
,
Interceptor
intercept
,
@Nullable
List
<
Interceptor
>
interceptors
,
@Nullable
GlobalHttpHandler
handler
)
{
,
@Nullable
List
<
Interceptor
>
interceptors
,
@Nullable
GlobalHttpHandler
handler
,
ExecutorService
executorService
)
{
builder
.
connectTimeout
(
TIME_OUT
,
TimeUnit
.
SECONDS
)
.
readTimeout
(
TIME_OUT
,
TimeUnit
.
SECONDS
)
...
...
@@ -122,6 +120,9 @@ public abstract class ClientModule {
}
}
// 为 OkHttp 设置默认的线程池。
builder
.
dispatcher
(
new
Dispatcher
(
executorService
));
if
(
configuration
!=
null
)
configuration
.
configOkhttp
(
application
,
builder
);
return
builder
.
build
();
...
...
arms/src/main/java/com/jess/arms/di/module/GlobalConfigModule.java
浏览文件 @
ef6cdd8f
...
...
@@ -19,32 +19,34 @@ import android.app.Application;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.text.TextUtils
;
import
com.bumptech.glide.Glide
;
import
com.jess.arms.http.BaseUrl
;
import
com.jess.arms.http.GlobalHttpHandler
;
import
com.jess.arms.http.imageloader.BaseImageLoaderStrategy
;
import
com.jess.arms.http.log.DefaultFormatPrinter
;
import
com.jess.arms.http.log.FormatPrinter
;
import
com.jess.arms.http.log.RequestInterceptor
;
import
com.jess.arms.http.imageloader.BaseImageLoaderStrategy
;
import
com.jess.arms.integration.cache.Cache
;
import
com.jess.arms.integration.cache.CacheType
;
import
com.jess.arms.integration.cache.IntelligentCache
;
import
com.jess.arms.integration.cache.LruCache
;
import
com.jess.arms.utils.DataHelper
;
import
com.jess.arms.utils.Preconditions
;
import
dagger.Module
;
import
dagger.Provides
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.SynchronousQueue
;
import
java.util.concurrent.ThreadPoolExecutor
;
import
java.util.concurrent.TimeUnit
;
import
javax.inject.Singleton
;
import
dagger.Module
;
import
dagger.Provides
;
import
me.jessyan.rxerrorhandler.handler.listener.ResponseErrorListener
;
import
okhttp3.HttpUrl
;
import
okhttp3.Interceptor
;
import
okhttp3.internal.Util
;
/**
* ================================================
...
...
@@ -72,6 +74,7 @@ public class GlobalConfigModule {
private
RequestInterceptor
.
Level
mPrintHttpLogLevel
;
private
FormatPrinter
mFormatPrinter
;
private
Cache
.
Factory
mCacheFactory
;
private
ExecutorService
mExecutorService
;
private
GlobalConfigModule
(
Builder
builder
)
{
this
.
mApiUrl
=
builder
.
apiUrl
;
...
...
@@ -88,6 +91,7 @@ public class GlobalConfigModule {
this
.
mPrintHttpLogLevel
=
builder
.
printHttpLogLevel
;
this
.
mFormatPrinter
=
builder
.
formatPrinter
;
this
.
mCacheFactory
=
builder
.
cacheFactory
;
this
.
mExecutorService
=
builder
.
executorService
;
}
public
static
Builder
builder
()
{
...
...
@@ -232,6 +236,19 @@ public class GlobalConfigModule {
}
:
mCacheFactory
;
}
/**
* 返回一个全局公用的线程池,适用于大多数异步需求。
* 避免多个线程池创建带来的资源消耗。
*
* @return {@link Executor}
*/
@Singleton
@Provides
ExecutorService
provideExecutorService
()
{
return
mExecutorService
==
null
?
new
ThreadPoolExecutor
(
0
,
Integer
.
MAX_VALUE
,
60
,
TimeUnit
.
SECONDS
,
new
SynchronousQueue
<
Runnable
>(),
Util
.
threadFactory
(
"Arms Executor"
,
false
))
:
mExecutorService
;
}
public
static
final
class
Builder
{
private
HttpUrl
apiUrl
;
...
...
@@ -248,6 +265,7 @@ public class GlobalConfigModule {
private
RequestInterceptor
.
Level
printHttpLogLevel
;
private
FormatPrinter
formatPrinter
;
private
Cache
.
Factory
cacheFactory
;
private
ExecutorService
executorService
;
private
Builder
()
{
}
...
...
@@ -329,6 +347,11 @@ public class GlobalConfigModule {
return
this
;
}
public
Builder
executorService
(
ExecutorService
executorService
)
{
this
.
executorService
=
executorService
;
return
this
;
}
public
GlobalConfigModule
build
()
{
return
new
GlobalConfigModule
(
this
);
}
...
...
demo/src/main/java/me/jessyan/mvparms/demo/app/GlobalConfiguration.java
浏览文件 @
ef6cdd8f
...
...
@@ -114,7 +114,8 @@ public final class GlobalConfiguration implements ConfigModule {
// Timber.i("printFileResponse:" + responseUrl);
// }
// })
// 可以自定义一个单例的线程池供全局使用。
// .executorService(Executors.newCachedThreadPool())
// 这里提供一个全局处理 Http 请求和响应结果的处理类,可以比客户端提前一步拿到服务器返回的结果,可以做一些操作,比如token超时,重新获取
.
globalHttpHandler
(
new
GlobalHttpHandlerImpl
(
context
))
// 用来处理 rxjava 中发生的所有错误,rxjava 中发生的每个错误都会回调此接口
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录