Skip to content

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

No packages published

Languages