Skip to content

Commit 86b5d2c

Browse files
committed
update: 允许下自定义线程池looper
1 parent 83e3a36 commit 86b5d2c

File tree

6 files changed

+32
-11
lines changed

6 files changed

+32
-11
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(251K),
2626

2727
#### 使用Gradle构建时添加以下依赖即可:
2828
```javascript
29-
implementation 'org.xutils:xutils:3.8.9'
29+
implementation 'org.xutils:xutils:3.8.10'
3030
```
3131

3232
#### 混淆配置参考示例项目sample的配置

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ buildscript {
66
jcenter()
77
}
88
dependencies {
9-
classpath 'com.android.tools.build:gradle:3.6.1'
9+
classpath 'com.android.tools.build:gradle:4.0.0'
1010
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
1111
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
1212

sample/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
<string name="remove">移除</string>
66
<string name="stop">停止</string>
77
<string name="start">开始下载</string>
8-
<string name="test_download_url">http://dl.bintray.com/wyouflf/maven/org/xutils/xutils/3.8.9/xutils-3.8.9.aar</string>
8+
<string name="test_download_url">http://dl.bintray.com/wyouflf/maven/org/xutils/xutils/3.8.10/xutils-3.8.10.aar</string>
99
</resources>

xutils/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ apply plugin: 'com.jfrog.bintray'
55
def siteUrl = 'https://github.com/wyouflf/xUtils3'
66
def gitUrl = 'https://github.com/wyouflf/xUtils3.git'
77
group = "org.xutils"
8-
version = "3.8.9"
8+
version = "3.8.10"
99

1010
android {
1111
compileSdkVersion 28

xutils/src/main/java/org/xutils/common/task/AbsTask.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.xutils.common.task;
22

3+
import android.os.Looper;
4+
35
import org.xutils.common.Callback;
46

57
import java.util.concurrent.Executor;
@@ -57,6 +59,10 @@ public Executor getExecutor() {
5759
return null;
5860
}
5961

62+
public Looper customLooper() {
63+
return null;
64+
}
65+
6066
protected final void update(int flag, Object... args) {
6167
if (taskProxy != null) {
6268
taskProxy.onUpdate(flag, args);

xutils/src/main/java/org/xutils/common/task/TaskProxy.java

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
private final AbsTask<ResultType> task;
2424
private final Executor executor;
25+
private final Handler handler;
2526
private volatile boolean callOnCanceled = false;
2627
private volatile boolean callOnFinished = false;
2728

@@ -30,6 +31,16 @@
3031
this.task = task;
3132
this.task.setTaskProxy(this);
3233
this.setTaskProxy(null);
34+
35+
// set handler
36+
Looper looper = task.customLooper();
37+
if (looper != null) {
38+
handler = new InternalHandler(looper);
39+
} else {
40+
handler = sHandler;
41+
}
42+
43+
// set executor
3344
Executor taskExecutor = task.getExecutor();
3445
if (taskExecutor == null) {
3546
taskExecutor = sDefaultExecutor;
@@ -85,42 +96,42 @@ public void run() {
8596
@Override
8697
protected void onWaiting() {
8798
this.setState(State.WAITING);
88-
sHandler.obtainMessage(MSG_WHAT_ON_WAITING, this).sendToTarget();
99+
handler.obtainMessage(MSG_WHAT_ON_WAITING, this).sendToTarget();
89100
}
90101

91102
@Override
92103
protected void onStarted() {
93104
this.setState(State.STARTED);
94-
sHandler.obtainMessage(MSG_WHAT_ON_START, this).sendToTarget();
105+
handler.obtainMessage(MSG_WHAT_ON_START, this).sendToTarget();
95106
}
96107

97108
@Override
98109
protected void onSuccess(ResultType result) {
99110
this.setState(State.SUCCESS);
100-
sHandler.obtainMessage(MSG_WHAT_ON_SUCCESS, this).sendToTarget();
111+
handler.obtainMessage(MSG_WHAT_ON_SUCCESS, this).sendToTarget();
101112
}
102113

103114
@Override
104115
protected void onError(Throwable ex, boolean isCallbackError) {
105116
this.setState(State.ERROR);
106-
sHandler.obtainMessage(MSG_WHAT_ON_ERROR, new ArgsObj(this, ex)).sendToTarget();
117+
handler.obtainMessage(MSG_WHAT_ON_ERROR, new ArgsObj(this, ex)).sendToTarget();
107118
}
108119

109120
@Override
110121
protected void onUpdate(int flag, Object... args) {
111122
// obtainMessage(int what, int arg1, int arg2, Object obj), arg2 not be used.
112-
sHandler.obtainMessage(MSG_WHAT_ON_UPDATE, flag, flag, new ArgsObj(this, args)).sendToTarget();
123+
handler.obtainMessage(MSG_WHAT_ON_UPDATE, flag, flag, new ArgsObj(this, args)).sendToTarget();
113124
}
114125

115126
@Override
116127
protected void onCancelled(Callback.CancelledException cex) {
117128
this.setState(State.CANCELLED);
118-
sHandler.obtainMessage(MSG_WHAT_ON_CANCEL, new ArgsObj(this, cex)).sendToTarget();
129+
handler.obtainMessage(MSG_WHAT_ON_CANCEL, new ArgsObj(this, cex)).sendToTarget();
119130
}
120131

121132
@Override
122133
protected void onFinished() {
123-
sHandler.obtainMessage(MSG_WHAT_ON_FINISHED, this).sendToTarget();
134+
handler.obtainMessage(MSG_WHAT_ON_FINISHED, this).sendToTarget();
124135
}
125136

126137
@Override
@@ -165,6 +176,10 @@ private InternalHandler() {
165176
super(Looper.getMainLooper());
166177
}
167178

179+
private InternalHandler(Looper looper) {
180+
super(looper);
181+
}
182+
168183
@Override
169184
@SuppressWarnings("unchecked")
170185
public void handleMessage(Message msg) {

0 commit comments

Comments
 (0)