android的线程管理器,[Android开源]:一款安全、轻巧、简单的线程池管理器EasyThread...
EasyThread通過對原生的線程池進行封裝,可讓你更方便的進行線程任務操作。
特性
簡單輕巧:方法數不過百,無額外次級依賴。
配置靈活:可方便、靈活的對每次所啟動的任務,配置線程名、線程優先級等。
使用安全:當線程出現異常。能自動將catch異常信息傳遞給用戶,避免出現crash。
線程切換:自帶線程切換功能:指定任務執行后,在哪個線程中進行用戶通知。
回調通知:當任務啟動時與任務運行完畢后。有分別的生命周期作為通知。
任務擴展:支持延遲任務以及異步回調任務
依賴
// 添加jitPack倉庫使用
maven { url 'https://jitpack.io' }
// 添加依賴
compile "com.github.yjfnypeu:EasyThread:0.5.0"
復制代碼
基本用法
使用方式分兩步走:
第一步:創建EasyThread實例。每個EasyThread實例會持有一個獨立的線程池提供使用。
EasyThread easyThread = EasyThread.Builder
//提供了四種create方法,用于根據需要創建不同類型的線程池進行使用
//比如createSingle():表示創建一個單例的線程池進行使用
.createXXX()
.build();
復制代碼第二步:使用創建的EasyThread實例進行任務執行:
EasyThread支持執行四種任務:
1. 普通Runnable任務
easyThread.execute(new Runnable(){
@Override
public void run() {
// do something.
}
});
復制代碼
2. 普通Callable任務
Future task = easyThread.submit(new Callback(){
@Override
public User call() throws Exception {
// do something
return user;
}
})
User result = task.get();
復制代碼
3. 異步回調任務
// 異步執行任務
Callable callable = new Callable(){
@Override
public User call() throws Exception {
// do something
return user;
}
}
// 異步回調
AsyncCallback async = new AsyncCallback() {
@Override
public void onSuccess(User user) {
// notify success;
}
@Override
public void onFailed(Throwable t) {
// notify failed.
}
};
// 啟動異步任務
easyThread.async(callable, async)
復制代碼
4. 延遲后臺任務
// 在啟動任務前,調用delay方法,指定延遲時間即可
easyThread.setDelay(time, unit)
.execute(runnable);
復制代碼
e.g 延遲3秒啟動執行任務
easyThread.setDelay(3, TimeUnit.SECONDS)
.execute(task);
復制代碼
高級配置
EasyThread提供了各種的額外配置,通過這些配置可以讓線程操作使用起來更加得心應手。
兩種配置方式
這里我們以配置后臺優先級進行說明:
1. 配置默認線程任務優先級(默認配置)
EasyThread.Builder.createXXX().setPriority(priority);
復制代碼
2. 配置當前線程任務優先級(當前任務配置)
easyThread.setPriority(priority).execute(task);
復制代碼
線程優先級及線程名
配置方式:
easyThread.setName(name)// 配置線程任務名
.setPriority()// 配置線程運行優先級
復制代碼
任務回調通知
接口說明:
public interface Callback{
// 線程任務啟動時的通知
void onStart (String threadName);
// 線程任務運行時出現異常時的通知
void onError (String threadName, Throwable t);
// 線程任務正常執行完成時的通知
void onCompleted (String threadName);
}
復制代碼
配置方式:
easyThread.setCallback(callback);
復制代碼
消息派發器
消息派發器用于消息回調線程切換,即指定回調任務需要運行在什么線程之上。
比如說在Android平臺,很常見的就是回調時需要進行界面通知,所以這個時候就需要回調通知運行在UI線,便于操作。
配置方式:
// 派發器的實例類型為java.util.concurrent.Executor子類
easyThread.setDeliver(deliver);
復制代碼
在默認條件下(即未配置額外的派發器時),在Android或者Java平臺,分別適配了不同的回調派發邏輯:
在純java環境下:回調方法所運行的線程與任務執行線程一致
在Android環境:回調方法默認運行于主線程
推薦配置
對于APP來說。線程資源是寶貴的。為了避免創建過多額外的線程,所以建議對每個app。提供一個統一的管理器維護所有的線程池,如下所示:
public final class ThreadManager{
private final static EasyThread io;
private final static EasyThread cache;
private final static EasyThread calculator;
private final static EasyThread file;
public static EasyThread getIO (){
return io;
}
public static EasyThread getCache(){
return cache;
}
public static EasyThread getCalculator(){
return calculator;
}
public static EasyThread getFile(){
return file;
}
static {
io = EasyThread.Builder.createFixed(6).setName("IO").setPriority(7).setCallback(new DefaultCallback()).build();
cache = EasyThread.Builder.createCacheable().setName("cache").setCallback(new DefaultCallback()).build();
calculator = EasyThread.Builder.createFixed(4).setName("calculator").setPriority(Thread.MAX_PRIORITY).setCallback(new DefaultCallback()).build();
file = EasyThread.Builder.createFixed(4).setName("file").setPriority(3).setCallback(new DefaultCallback()).build();
}
private static class DefaultCallback implements Callback{
@Override
public void onError(String threadName, Throwable t){
MyLog.e("Task with thread %s has occurs an error: %s", threadName, t.getMessage());
}
@Override
public void onCompleted(String threadName){
MyLog.d("Task with thread %s completed", threadName);
}
@Override
public void onStart(String threadName){
MyLog.d("Task with thread %s start running!", threadName);
}
}
}
復制代碼
總結
以上是生活随笔為你收集整理的android的线程管理器,[Android开源]:一款安全、轻巧、简单的线程池管理器EasyThread...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 同步执行方法吗,Andr
- 下一篇: android二级菜单ui,Androi