Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: RunOnUiThread vs AsyncTask

I believe Google suggests developers to use AsyncTask. However, I would like to know how is it different from using 'new Thread' and then calling 'RunOnUiThread' in performance and memory efficiency.

Example for using 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 } 

What are the advantages / disadvantages?

Edit:

I am not looking for answers like 'easier to see the code', 'convenient for developers' etc. I am actually looking for technical diffrences behind the scene.

For example, Paul Nikonowicz's answer below would have been the answer I wanted to see. (But AsyncTask behaves the same)

like image 315
jclova Avatar asked Feb 15 '12 15:02

jclova


1 Answers

When you use new Thread you're really creating a new thread every time you execute that. AsyncTask however, uses a static pool of max 128 threads and will reuse an old thread whenever it exists. So, running AsyncTask 10 times in serial will only create one thread that runs the task 10 times instead of 10 threads.

That's one of the differences among many.

like image 200
Randy Sugianto 'Yuku' Avatar answered Oct 17 '22 16:10

Randy Sugianto 'Yuku'