0

我只是想创建一个线程的单个对象,即一个单例,这样我就在整个应用程序中只创建了一个线程对象。每当我打电话时,它的工作都是一样的。我不想让进程在主应用程序线程中运行。

如果从多个位置调用作业,我还想同步作业(由 runnable 完成的工作)。

这种设计会很好吗?它的优点和缺点是什么?

我实际上将从android接收器(我有几个)调用runnable的运行,它将启动一个服务并调用runnable。

4

1 回答 1

0

我不认为单例线程是推荐的事情。如果您想要一个一直运行并处理您的请求的线程实例,那么请考虑使用HandlerThread,它基本上是一个带有 Looper 的线程,可以让线程保持运行并等待您的消息。

不会像在普通线程中那样覆盖run()方法,而是通过连接到 handlerThread 循环器的 Handler 对象发送消息来与线程通信。这是一个例子:

定义并启动您的 HandlerThread

 HandlerThread handlerThread = new HandlerThread("My handler thread");
 handlerThread.start();

创建与handlerThread looper关联的处理程序并覆盖handleMessage

 Handler handler = new Handler(handlerThread.getLooper()) {
      public void handleMessage(Message msg) {

    switch (msg.what) {
    case DO_SOMETHING:
        // do your logic
        break;

    case DO_ANOTHER_THING:
        // do your logic
         break;        
    }        
  }
}

与您的线程交流 发送消息

Message msg = new Message();
msg.what = DO_SOMETHING; // an arbitrary constant integer
// You can pass extra arguments in msg.arg1, msg.arg2 and msg.obj
handler.sendMessage(msg);

当你完成后记得停止你的 handlerThread

handlerThread.quit();
于 2013-01-04T08:28:24.303 回答