Android: RunOnUiThread против AsyncTask

Я считаю, что Google предлагает разработчикам использовать AsyncTask. Однако я хотел бы знать, чем это отличается от использования «нового потока» с последующим вызовом «RunOnUiThread» с точки зрения производительности и эффективности использования памяти.

Пример использования RunOnUithread:

    // some code #1
    Thread t = new Thread("Thread1") {
        @Override
        public void run() {
            // some code #2
            runOnUiThread(new Runnable() {
                public void run() {
                    // some code #3 (that needs to be ran in UI thread)

                }
            });

        }
    };
    t.start();

vs.

AsyncTask:

onPreExecute() {
   // some code #1
}

doInBackground() {
   // some code #2
}

onPostExecute() {
   // some code #3
}

Каковы преимущества / недостатки?

Изменить:

Я не ищу ответов типа «легче увидеть код», «удобно для разработчиков» и т. Д. Я действительно ищу технические различия за сценой.

Например, ответ Пола Никоновича ниже был бы тем ответом, который я хотел бы увидеть. (Но AsyncTask ведет себя так же)

36
задан jclova 16 February 2012 в 00:07
поделиться