Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

xwdz/QuickThread

Repository files navigation

QuickThread

特性

  • 任务扩展:支持延迟任务以及异步回调任务;
  • 回调通知:当任务启动时与任务运行完毕后,有分别的生命周期作为通知;
  • 线程切换:可制定是否回调主线程;
  • 使用安全:当线程出现异常。能自动将catch异常信息传递给用户,避免出现crash;

lastVersion =

依赖

compile 'com.xwdz:QuickThread:$lastVersion'

创建QuickPool实例

QuietPool sCache = new QuietPool.Builder()
 //createXXX
 .createCached()
 .build();

QuickThread默认提供了了一个统一的管理器维护所有的线程池AskQuietManager


使用QuickPool执行任务;

设置Callback

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) {
 }
 });

Runnable任务

QuietPool quickPool = AskQuietManager.getNetwork();
 quickPool.execute(new Runnable() {
 @Override
 public void run() {
 
 }
 });

同步Callable任务

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();
 }

异步Callable任务

重点说一下第三个参数

  • 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);

About

Deprecated

Topics

Resources

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /