- 任务扩展:支持延迟任务以及异步回调任务;
- 回调通知:当任务启动时与任务运行完毕后,有分别的生命周期作为通知;
- 线程切换:可制定是否回调主线程;
- 使用安全:当线程出现异常。能自动将catch异常信息传递给用户,避免出现crash;
compile 'com.xwdz:QuickThread:$lastVersion'
QuietPool sCache = new QuietPool.Builder()
//createXXX
.createCached()
.build();
QuickThread默认提供了了一个统一的管理器维护所有的线程池AskQuietManager
QuietPool quickPool = AskQuietManager.getNetwork();
quickPool.setGlobalCallback(new GlobalCallback() {
@Override
public void onStart(String threadName) {
}
@Override
public void onCompleted(String threadName) {
}
@Override
public void onError(String threadName, Throwable t) {
}
});
QuietPool quickPool = AskQuietManager.getNetwork();
quickPool.execute(new Runnable() {
@Override
public void run() {
}
});
Future syncFuture = AskQuietManager.getCache().submit(new QuickCallable<String>("test") {
@Override
public String qCall() throws Exception {
Thread.sleep(10000);
return "this is Test";
}
});
try {
String result = (String) syncFuture.get();
} catch (Exception e) {
e.printStackTrace();
}
重点说一下第三个参数
- isMainUICallback :
是否回调在主线程
AskQuietManager.getCache().async(new QuickCallable<String>("name") {
@Override
public String qCall() throws Exception {
if (Looper.getMainLooper() == Looper.myLooper()) {
Log.e("TAG", "main Thread");
} else {
Log.e("TAG", "child Thread");
}
Thread.sleep(10000);
return "123123";
}
}, new Response<String>() {
@Override
public void onSuccess(String s) {
Log.e("TAG", "s = " + s);
}
@Override
public void onError(Throwable e) {
}
}, true);
//单位默认毫秒
AskQuietManager.getIO().delay(new Runnable() {
@Override
public void run() {
}
}, 1000);
//or
AskQuietManager.getIO().delay(new Runnable() {
@Override
public void run() {
}
}, 1000,TimeUnit.MILLISECONDS);
| 参数 | 说明 |
|---|---|
| Runnable | 任务 |
| initialDelay | 几秒之后开始执行 |
| delay | 周期性执行间隔时间 |
//单位默认毫秒
AskQuietManager.getIO().scheduled(new Runnable() {
@Override
public void run() {
}
}, 1000, 3000);
// or
AskQuietManager.getIO().scheduled(new Runnable() {
@Override
public void run() {
}
}, 1000, 3000,TimeUnit.MILLISECONDS);