新建 开辟线程的类,更加简洁方便

后台开启线程的函数写法:

更加简洁明了:

public class BackTaskRunner {
    private static final String TAG = "BackTaskRunner";
    private HandlerThread handlerThread;
    private Handler handler;

    private BackTaskRunner() {
        handlerThread = new HandlerThread(TAG);
        handlerThread.start();
        handler = new Handler(handlerThread.getLooper());
    }

    public static Handler getHandler() {
        return SingletonHolder.sRunner.handler;
    }

    private static class SingletonHolder {
        static BackTaskRunner sRunner = new BackTaskRunner();
    }
}

调用方法:

 BackTaskRunner.getHandler().post(new Runnable() {
            @Override
            public void run() {
                Logging.d(TAG, "pay() start UNPay");
                //最后一个参数: "01" 代表测试环境    "00" 代表正式环境
                UPPayAssistEx.startPay(activity,null,null,tn,payMode);
            }
        });
时间: 2024-10-27 10:53:38

新建 开辟线程的类,更加简洁方便的相关文章

Qt 学习之路 :Qt 线程相关类

希望上一章有关事件循环的内容还没有把你绕晕.本章将重新回到有关线程的相关内容上面来.在前面的章节我们了解了有关QThread类的简单使用.不过,Qt 提供的有关线程的类可不那么简单,否则的话我们也没必要再三强调使用线程一定要万分小心,一不留神就会陷入陷阱. 事实上,Qt 对线程的支持可以追溯到2000年9月22日发布的 Qt 2.2.在这个版本中,Qt 引入了QThread.不过,当时对线程的支持并不是默认开启的.Qt 4.0 开始,线程成为所有平台的默认开启选项(这意味着如果不需要线程,你可以

FreeOnTerminate 的线程在线程管理类的Destroy释放时手工释放的问题

这个问题折腾了我整整一天. 有一个线程管理类,集中管理所有新建的线程, 线程统一在创建时标识 FreeOnTerminate 为 True. 因为有的线程是不限次循环的,所以在管理类最后 Destroy 时必须对这些线程进行手工停止并释放. 开始代码: FAllThread.Items[i].FOwner := nil; //释放时不必再消息通知管理类删除记录 FAllThread.Items[i].Terminate; 发现 FastMM检测有内存泄露,想了下因为线程还没结束,但主进程结束了,

C#WinForm线程基类

在CS模式开发中一般我们需要用到大量的线程来处理比较耗时的操作,以防止界面假死带来不好的体验效果,下面我将我定义的线程基类给大家参考下,如有问题欢迎指正. 基类代码 1 #region 方法有返回值 2 /// <summary> 3 /// 功能描述:多线程执行方法,方法有返回值 4 /// 作 者:huangzh 5 /// 创建日期:2017-03-29 17:44:26 6 /// 任务编号:MES 7 /// </summary> 8 /// <param name

C++进阶学习——线程基类的设计(Linux)

此示例是在Linux环境下(使用Linux系统编程线程相关函数)测试,文件说明如下: ThreadBase.cpp, ThreadBase.h为线程基类 ThreadDerive.cpp, ThreadDerive.h为测试派生类 main.cpp为测试程序 ThreadBase.h内容如下: #ifndef __THREADBASE_H__ #define __THREADBASE_H__ #include <pthread.h> //线程基类 class ThreadBase { publ

线程 ManualResetEvent 类

Reset(): 当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时, 它调用 Reset 以将 ManualResetEvent 置于非终止状态.此线程可被视为控制 ManualResetEvent. 为了把状态修改为无信号的,必须调用ReSet()方法. WaitOne(): 调用ManualResetEvent 上的 WaitOne 的线程将阻止,并等待信号. Set ()当控制线程完成活动时,它调用 Set 以发出等待线程可以继续进行的信号.并释放所有等待线程.Set将事件状

C#中如果正确使用线程Task类和Thread类

C#中使用线程Task类和Thread类小结 刚接触C#3个月左右,原先一直使用C++开发,因为公司的需要,所地采用C#开发,主要是控制设备的实时性操作,此为背景. 对于C#中的Task和Thread我在这不作介绍,要了解更多的,如果查看相当信息.此次项目中使用到TASK和THRED,让我调试足足用了将近两周的时间才找出问题所在,所以在此写出来防止跟我一样刚接触C#,又同时需要对线程的实时性要求的开发人员一些个人总结注意事项. 1.Task适合用于多处理器,且i系列多处理器. 2.Thread则

线程基类 转载滴,收藏一下

转载请注明出处.http://www.cnblogs.com/zetee/p/3486993.html 多线程这个概念大家都很熟悉,对于winform的开发人员来说.用的还是多的.但估计都是用Timer,或者backgroundWorker. 你是否曾经想过,写一个基类,然后....一用到多线程的时候,就马上能用上呢. 没错,福利来了,这面我为大家写了多线程的一个基类.只有你用到多线程,下面的代码肯定能帮到你很多忙 /// <summary> /// 下载线程对了. /// </summ

初学者如何新建一个封装的类来封装方法

第一步 AppDelegate中引用导航器,并设置根视图,同时隐藏导航栏 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for c

PyQt5学习笔记15----PyQt 线程相关类

QThread是我们将要详细介绍的第一个类.它也是 Qt 线程类中最核心的底层类.由于 PyQt 的跨平台特性,QThread要隐藏掉所有平台相关的代码. 正如前面所说,要使用QThread开始一个线程,我们可以创建它的一个子类,然后覆盖其QThread.run()函数: class Thread(QThread): def __init__(self): super(Thread,self).__init__() def run(self): pass #线程相关代码 然后我们这样新建一个新的