2017-07-28 51 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(); 
相关问题