我的问题是关于如何在我的服务的API中在另一个线程中运行一段代码。
我有一个API函数在我的服务中。只有这个API代码的一部分(2-3 LOC)是独立的,我想将它移动到单独的线程中,因为这些代码占用了很长时间,而且这些代码对UI线程目前没有影响。这是我所做的。
原始代码:
func(){
subA();
subB();
subC();
}
修改后的代码:
Thread mThread = null;
func(){
subA();
if(mThread == null){
mThread = new Thread(){
public void run(){
subB();
subC();
}
}
}
mThread.start();
}
运行此代码时,我会收到一个“线程已经启动”的异常。
我在Stack Overflow上读到过,已经启动的线程不能再次启动。我需要再次创建一个新的线程并启动它。但是,我不想每次都创建一个新的线程对象,因为这会导致UI线程性能问题。有没有其他方法可以处理这个问题?
我在Android中发现了另外几种方法,如Handler、HandlerThread、AsyncTask等。但我无法确定哪种方法最适合在这里使用(我不想每次都创建新的thread/asynctask/handler/handlerthread对象,只想创建一次线程对象并每次重用它)。
如果有人在这个领域工作过,请帮忙!