2017-07-28 47 views
0

我有3個公共空隙。第一個void解析pdf文件。第二個void將該pdf文件增強爲字符串,第三個void使用該字符串以編程方式顯示文本視圖(在for-loop中)。當所有這些空白都被調用時,應用程序崩潰,因爲它們都試圖同時運行。我希望他們等待對方完成任務。我不想創建一個與它的所有組件的大型空洞。按順序運行3次公共空白(每次完成任務後)

我怎麼稱呼他們,讓他們等待對方完成?

+1

這聽起來稍微過我。對於在單個線程中運行的三種方法,如果您連續調用它們,它們應該以串行方式執行,而不是並行執行。 –

+0

調用前一個內部的每個方法。 I.e .:'MethodA()'調用'MethodB()'和'MethodB()'調用'MethodC()'。 –

+1

@ModularSynth是的......但是可能會有更優雅的解決方案涉及線程。 –

回答

2

嘗試使用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(); 
相關問題