Do you want to learn about Android Handler Thread for multi threading ? We have multiple ways to accomplish the problem at hand.
But here we will specifically use the Android Handler Thread to accomplish our multi threading task.
I had previously written about async task’s deprecation and what you should do about it. Here we will look at the multi threading.
Quick Navigation
What is Handler Thread in Android ?
The official android documentation states the HandlerThread
as
A
Thread
that has aLooper
. TheLooper
can then be used to createHandler
s. Note that just like with a regularThread
,Thread.start()
must still be called.
Now let us look at unofficial definition of HandlerThread
class. It is just another subclass of Thread
which will help you create a new non UI thread.
How to use Handler Thread
in Android ?
Before actually implementing the handler thread let us look at how we can do it in Android.
Here are a list of steps we will be doing
Step 1: Create a new instance of handler thread by passing in the name for the thread.
Step 2: Invoke the .start()
method in the instance of handler thread.
Step 3: Get the Looper
from handler thread and create a new Handler
instance.
Step 4: Create a new Runnable
instance for passing in to the Handler.
Step 5: Pass in the Runnable
instance.
Handler Thread Implementation Using Java
Now let us look at the source code for the HandlerThread
. The code is self explanatory, and I have also included the comments in the code.
// create and start new Handler Thread
HandlerThread handlerThread = new HandlerThread("MyBackgroundTask");
handlerThread.start();
// create new instance of Handler passing in the Looper from handlerThread above
Handler handler = new Handler(handlerThread.getLooper());
Runnable runnable = new Runnable() {
@Override
public void run() {
// put your code that must run outside
}
};
// here we have to execute the runnable code
handler.post(runnable);
Code language: Java (java)
Now let us convert the same code to Kotlin implementation.
Handler Thread Implementation Using Kotlin
Let us look at the same code in Kotlin. If you are just starting out with Kotlin.
// create and start new Handler Thread
val handlerThread = HandlerThread("MyBackgroundTask")
handlerThread.start()
// create new instance of Handler passing in the Looper from handlerThread above
val handler = Handler(handlerThread.looper)
val runnable = Runnable {
// put your code that must run outside
}
// here we have to execute the runnable code
handler.post(runnable)
Code language: Kotlin (kotlin)
Now that we have seen the implementation for handler thread let us learn something more about it.
When should you use Handler Thread
As we all know the AsyncTask
has deprecated and there are multiple ways of multi threading. You should use this if you want to just do certain task once or twice.
Meaning, your application doesn’t really depend much on multi-threading and it’s just dead simple. You are okay with using these kind of sub classes of Thread
.
If you heavily depend on multi-threading. I recommend using co-routines introduced in Kotlin’s API. But if you are still using Java or managing legacy code.
Posts You Should Read
– Show or Hide Soft Keyboard in Android Application And More
– OnClickListener in Android RecyclerView: Example
– Using Bottom Navigation Bar in Android: An Easy Guide
– Android Notification Manager: Create Notification in Android
– Learn Android Room Persistence Library for SQLite Database