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是的......但是可能會有更優雅的解決方案涉及線程。 –