2011-10-18 29 views
0

我有很多任務,我應該使用多線程來處理他們,什麼是最好的解決辦法,?均值是我可以使用線程的數量最少,但過程中最爲任務以最快的時間。Android的有關多線程進程

+0

AsyncTask可以幫助你。 –

回答

1

我認爲AsyncTask對你很有用。你可以在這個很好的解釋和給出的例子中找到更多關於它的Android - AsyncTask

如果你想使用Thread那麼你管理所有的線程,也肯定not to blocking the UI Thread.

處理器和的AsyncTask之間的區別...

1.處理程序相關聯與應用程序的主線程。它處理並安排 消息和從後臺線程發送到應用程序主線程的runnables。

2.AsyncTask提供了一種簡單的方法來處理,以便不受耗時的操作阻止它來更新UI後臺線程。

答案是,既可以用來更新從後臺線程的UI,不同的是在你的執行情況。您可以考慮使用處理程序,您想要發佈延遲的消息或按特定順序將消息發送到MessageQueue

你可以考慮,如果你想在一個簡單方便易的方式來交換應用程序主線程和後臺線程之間的參數(從而更新UI)使用的AsyncTask。

Example for Threads, Handlers and AsyncTask in Android

謝謝。

0

請看看服務和AsyncTask的相同。除了處理NDK和使用pthreads之外,處理純線程要好得多。

+0

我想使用handleThraed。 – farmer

0

有很多辦法做到多線程的機器人。

我喜歡用handlerThread,給你所有的工具,讓你的UI與線程eeasily溝通。 例如:

public class MyThread extends HandlerThread implements Callback 
{ 
    public MyThread() 
    { 
     super(ThreadDP.class.getSimpleName(), Process.THREAD_PRIORITY_DISPLAY); 
     this.start(); 
    } 

    @Override 
    protected void onLooperPrepared() 
    { 
     super.onLooperPrepared(); 
    } 

    @Override 
    public boolean handleMessage(Message msg) { 
     switch (msg.what) 
     { 
      case 1 : 
       this.doA(); 
       return true; 

      //Message 2 let's call doB() 
      case 2 : 
       this.doB(); 
       return true; 

      default: 
       return false; 
     } 
    } 

    //Implement doA() and doB() 
} 

這種簡單的線程可以處理你的活動或其他線程發送消息。手柄系統非常快(我可以沒有任何問題地獲得25fps的mjpeg)。

有可能是更好的解決方案(我不是專家),但我可以得到高達5線同時接收,發送(加工)的工作就像一個魅力的網絡數據。