android 线程管理类

1. 延时任务以及取消延时的应用场景:实时搜索,文字内容变化时候不发送请求,当停止变化指定时间后再发送请求

2. 使用方法:

// 回到主线程
MainThreadHelper.runOnUIthread(new Runnable() {
                    @Override
                    public void run() {
                       // pushActivity();
                    }
});
// 延时调用以及取消延迟
MainThreadHelper.runDelayedCall(300, new MainThreadHelper.DelayedCallListener() {
            @Override
            public void onClick() {
              //  animalHiddenView();
            }
});

3. 实现类代码:


import android.os.Handler;
import android.os.Looper;
import android.util.Log;

/**
 * Created by jing on 17/5/19.
 * 线程管理~
 */
public class MainThreadHelper{
    private MainThreadHelper(){ super(); }
    // 单利模式
    private static MainThreadHelper mainThreadHelper = new MainThreadHelper();
    /**
     * 回到在主线程
     **/
    private MainThreadComplate mainThreadComplate = new MainThreadComplate();
    public static void runOnUIthread(Runnable runnable){
        mainThreadHelper.mainThreadComplate.runOnUIthread(runnable);
    }

    /**
    * 打印当前线程
    * */
    public static void logCurrentThread(){
        String string = Thread.currentThread().toString();
        Log.d("当前线程",string);
    }

    /** 延时任务以及取消延时 */
    private DelayedCallComplate delayedCallComplate = new DelayedCallComplate();
    public interface DelayedCallListener{
        void onClick();
    }
    public static void runDelayedCall(long delayMillis,DelayedCallListener listener){
        mainThreadHelper.delayedCallComplate.runDelayedCall(delayMillis,listener);
    }
}
/** 主线程相关类 */
class MainThreadComplate{
    private Handler handler = new Handler(Looper.getMainLooper());
    /** 回到在主线程 */
    public void runOnUIthread(Runnable runnable){
        if (Looper.myLooper() == Looper.getMainLooper()){
            runnable.run();
            return;
        }
        handler.post(runnable);
    }
}

/** 延时任务以及取消延时类 */
class  DelayedCallComplate implements Runnable{
    private MainThreadHelper.DelayedCallListener listener = null;
    private Handler handler = new Handler(Looper.getMainLooper());
    public void runDelayedCall(long delayMillis,MainThreadHelper.DelayedCallListener listener){
        this.listener = listener;
        handler.removeCallbacks(this);
        handler.postDelayed(this,delayMillis);
    }
    @Override
    public void run() {
        if (listener == null) return;
        listener.onClick();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,665评论 19 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,270评论 8 265
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 12,478评论 6 13
  • 对一个在学校工作的普通老师来说,如果整天就知道埋头苦干,那他的生活一定是十分乏味的,工作的效率也必定是不好的...
    雨如花飞阅读 443评论 2 2
  • 中国人常说读万卷书不如行万里路,不要做思想的巨人,行动的矮子。但是如果行万里路没有方向的指引,智慧的启迪,那么走多...
    风景奶茶阅读 766评论 1 2

友情链接更多精彩内容