0
我有3个公共空隙。第一个void解析pdf文件。第二个void将该pdf文件增强为字符串,第三个void使用该字符串以编程方式显示文本视图(在for-loop中)。当所有这些空白都被调用时,应用程序崩溃,因为它们都试图同时运行。我希望他们等待对方完成任务。我不想创建一个与它的所有组件的大型空洞。按顺序运行3次公共空白(每次完成任务后)
我怎么称呼他们,让他们等待对方完成?
我有3个公共空隙。第一个void解析pdf文件。第二个void将该pdf文件增强为字符串,第三个void使用该字符串以编程方式显示文本视图(在for-loop中)。当所有这些空白都被调用时,应用程序崩溃,因为它们都试图同时运行。我希望他们等待对方完成任务。我不想创建一个与它的所有组件的大型空洞。按顺序运行3次公共空白(每次完成任务后)
我怎么称呼他们,让他们等待对方完成?
尝试使用Runnable的阵列
阵:
Runnable[] methods = new Runnable[]{
new Runnable() {
@Override
public void run() {
Log.d("TAG", "1");
//1 method
}
},
new Runnable() {
@Override
public void run() {
Log.d("TAG", "2");
//2 method
}
},
new Runnable() {
@Override
public void run() {
Log.d("TAG", "3");
//3 method
}
}
};
调用它:
ExecutorService service = Executors.newSingleThreadExecutor();
for (Runnable r : methods)
service.submit(r);
service.shutdown();
这听起来稍微过我。对于在单个线程中运行的三种方法,如果您连续调用它们,它们应该以串行方式执行,而不是并行执行。 –
调用前一个内部的每个方法。 I.e .:'MethodA()'调用'MethodB()'和'MethodB()'调用'MethodC()'。 –
@ModularSynth是的......但是可能会有更优雅的解决方案涉及线程。 –