E.g.: you gonna do something that will take a few seconds and don't wanna freeze your UI thred, right? You could use an AsyncTask but you don't wanna create a external (or inner) class to solve a small freeze problem.
So, is a good pratice do it?
package com.example.stackoverflowsandbox; import android.os.AsyncTask; public class Foo { // E.g. before call foo method you change you Activity to loading state. private void foo() { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground( final Void ... params ) { // something you know that will take a few seconds return null; } @Override protected void onPostExecute( final Void result ) { // continue what you are doing... Foo.this.continueSomething(); } }.execute(); } private void continueSomething() { // some code... } }
I've faced with that when I compressing Bitmaps and looping big array to update some data inside items.
Yes, but not the way you do it.
Remember that starting Honeycomb the default execution model of AsyncTasks is serial:
new AsyncTask<Void, Void, Void>() { .... .... }.execute(); <------ serial execution
Instead use a thread pool executor:
new AsyncTask<Void, Void, Void>() { .... .... }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null); <------ parallel execution
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With