Asynctask的代码结构Android

问题描述:

我想我只是在制作“意大利面代码”。 Perhabs的一些专家可以帮助我为我的解决方案编写更好的代码。以下伪代码将显示我的问题:Asynctask的代码结构Android

我有一些运行时间很长的程序。此过程将显示一个进度条。我使用Asynctasks来实现这一点。这一切工作正常,但我的代码是不是维护了:

我希望把它简单的代码,而无需嵌套代码:

public void onCreate(Bundle savedInstanceState) { 
LongrunningTask1(); 
dosomething1(); 
LongrunningTask2(); 
dosomething2(); 
LongrunningTask3(); 
dosomething3(); 
LongrunningTask4(); 
dosomething4(); 
} 

我的代码以Asynctasks:

public void onCreate(Bundle savedInstanceState) { 

    new LongrunningTask1().execute("Task1"); 

} 
class LongrunningTask1 extends AsyncTask<String, Void, boolean> { 
     private Exception exception; 
     protected RSSFeed doInBackground(String... urls) { 
      try { 
       Do; 
       return true; 
      } catch (Exception e) { 
       return null; 
      } 
     } 
    protected void onProgressUpdate(Void... values) { 
     updateprogressbar(); 
    } 

     protected void onPostExecute(RSSFeed feed) { 
     dosomething1(); 
     new LongrunningTask2().execute("Task2"); 
     } 
    } 
class LongrunningTask2 extends AsyncTask<String, Void, boolean> { 
    similar to LongrunningTask1 

     protected void onPostExecute(RSSFeed feed) { 
     dosomething2(); 
     new LongrunningTask3().execute("Task3"); 
     } 

} 
class LongrunningTask3 extends AsyncTask<String, Void, boolean> { 
    similar to LongrunningTask2 

     protected void onPostExecute(RSSFeed feed) { 
     dosomething3(); 
     new LongrunningTask4().execute("Task4"); 
     } 
} 
class LongrunningTask4 extends AsyncTask<String, Void, boolean> { 
    similar to LongrunningTask3 

     protected void onPostExecute(RSSFeed feed) { 
     dosomething4(); 
     } 
} 

我想以避免任何嵌套调用。谁能帮我 ?

Regards

为什么要在独立的线程中执行它们?你可以在一个AsyncTask中完成它们。

也许你可以拿一个在ThreadPoolExecutor?我用它来解决类似的问题。

+0

嗨。谢谢你的帮助。当然,在一个线程中执行所有东西会更容易,但是我不需要顺序地执行线程。 ThreadPoolExecutor很适合其他情况。但在我的情况下,我真的很喜欢有一个简单的解决方案,如果有的话。 – 2013-05-09 07:07:27