(我希望,您在上面的示例中通过返回值来澄清)因此,这是针对您的任务的几种类型的单一解决方案。仔细观察在新线程中运行的任务。您需要在后台线程池中启动操作。...
注意!(我也希望你澄清使用背景线程。例如,将上面的代码与函数 .execute() 一起使用 - 不会启动新线程,而只是将新任务从 BlockingQueue 执行到静态 ThreadPool 中)
那么下一步是什么呢?使用函数 .get() 在 MainThread 中执行任务,您需要在当前操作循环中发布此任务。你将帮助处理程序和循环器。回答你的问题,你应该知道,你只有一种方法可以完成这项任务。使用方法 .execute() 在后台线程中启动操作,并使用方法 .get() 向处理程序启动新任务。仅此而已!
如果你想了解一些实现的例子,有很多种解决方案。我只是使用Handler和HandlerThread发布单曲,以低估此示例的工作。
public class MyLibrary extend HandlerThread {
private static Handler backgroundHandler;
private static Handler foregroundHandler;
private static MyLibrary myLibrary
private MyLibrary () {
super(MyLibrary.class.getSimpleName());
start();
}
public static MyLibrary getInstance() {
if (myLibrary == null) {
synchronized (MyLibrary.class) {
if (myLibrary == null) {
myLibrary = new MyLibrary();
}
}
}
return myLibrary;
}
public static WorkingTask with (Context context) {
//Just update, if there are null
if (foregroundHandler == null) {
foregroundHandler = new Handler(context.getMainLooper);
}
if (backgroundHandler == null) {
backgroundHandler = new Handler(getLooper);
}
return new WorkingTask();
}
public void getBackgroundHandler () {
return backgroundHandler;
}
public void getForegroundHandler () {
return foregroundHandler;
}
}
// ..........
public class WorkingTask {
private Runnable workingRunnable;
public performTask (Runnable run) {
this.workingRunnable = run;
return this;
}
public void execute () {
MyLibrary.getInstance().getBackgoundHandler()
.postRunnable(workingRunnable)
}
public void get () {
MyLibrary.getInstance().getForegroundHanlder()
.postRunnable(workingRunnable)
}
}