This commit is contained in:
wangcongtao
2020-03-23 16:54:42 +08:00
parent d5af18f25c
commit 869034a3a8
5 changed files with 104 additions and 7 deletions

View File

@@ -0,0 +1,65 @@
package com.mogo.utils;
import android.os.Handler;
import android.os.HandlerThread;
/**
* @author congtaowang
* @since 2020-03-23
* <p>
* 描述
*/
public class WorkThreadHandler {
private Handler mHandler;
private HandlerThread mThread;
private WorkThreadHandler() {
// private constructor
mThread = new HandlerThread( "work-thread-handler" );
mThread.start();
mHandler = new Handler( mThread.getLooper() );
}
private static final class InstanceHolder {
private static final WorkThreadHandler INSTANCE = new WorkThreadHandler();
}
public static WorkThreadHandler getInstance() {
return InstanceHolder.INSTANCE;
}
private Object readResolve() {
// 阻止反序列化,必须实现 Serializable 接口
return InstanceHolder.INSTANCE;
}
private Object sToken = new Object();
public boolean post( Runnable r ) {
return mHandler != null && mHandler.post( r );
}
public boolean postDelayed(Runnable r, long delayMillis ) {
return mHandler != null && mHandler.postDelayed( r, delayMillis );
}
public Handler getWorkThreadHandler() {
return mHandler;
}
public boolean postOnceDelayed(Runnable r, long delayMillis ) {
if ( mHandler == null ) {
return false;
} else {
mHandler.removeCallbacks( r, sToken );
return mHandler.postDelayed( r, delayMillis );
}
}
public void removeCallbacks( Runnable runnable ) {
if ( mHandler != null ) {
mHandler.removeCallbacks( runnable );
}
}
}