Multithreading is a meachanism where a one user can access more than one process or you can say that an operating system can perform more than one operations simultaneously.
In Android we have two types of thread that are Main thread and background thread.
Main thread is one that modifies the UI and handles input events from one single thread but background thread is one that can't touch the main UI directly.
Android collects all the input events in a Queue and process them as an instance of looper class.
Here is an example of Main thread operations :
someButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
someButton.setText("Main thread");
}
});
But how can we touch this button from a background thread ?
To touch main ui from background thread we have many ways to do that are :
1. postDelayed() method
2. Handler
3. runOnUIThread() method
4. AsyncTask
Example of AsyncTask to touch main ui :
private class MyAsyncTask extends AsyncTask<url, Integer, Long> {
protected Long doInBackground(url... urls) {
// Runs in background thread
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
// Runs in Main thread
}
protected void onPostExecute(Long result) {
someButton.setText("Main thread from asyncTask");
// Runs in Main thread so you can touch ui here
}
}
0 Comment(s)