We know that in android only main thread can touch the UI but there are some severals methods that can touch the UI from background thread that are following as :
1. Handler
2. PostDelayed
3. RunOnUIThread
4. AsyncTask
1. Handler is basically used to access main ui from background thread, with handler we obtain a message from background thread and we handle this message in main ui thread where we can access or touch main ui easily.
Example :
Thread thread = new Thread() {
@Override
public void run(){
// some background work here in this thread.
if(succeed){
h.sendEmptyMessage(0);
}else{
h.sendEmptyMessage(1);
}
}
};
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
if(msg.what == 0){
updateUI();
}else{
// show some dialog or toast
}
}
};
2. Post Delayed method add the runnable into message queue that is to be run after specified period of time. Runnable will be run on the thread to which this handler is attached.
boolean postDelayed(Runnable r, long time)
-> This method return true if runnable successfully added into the message queue.
-> This method return false if message queue is exiting.
-> If user exit the app by pressing back button then looper will also exit and so postDelayed will also exit and will return false.
Example :
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
btn1.setBackgroundColor(Color.BLACK);
}
}, 2000);
3. runOnUiThread to run something on ui main thread.
Example :
runOnUiThread(new Runnable() {
@Override
public void run() {
btn.setText(run on ui thread);
}
});
4. AsyncTask used to perform action on ui thread by using onPre , onPost execute method and work in background using doInBackground method of this class.
0 Comment(s)