Handlers in Android
      
         by Bill Farmer.
        Categories: 
  
    
      
        Hacking
      
  
.
        
        
        
      
    
    
Using a handler to return results from a worker thread
This has taken me quite a while to put together. There are throw-away remarks in the Android docs about this, but no useful examples. You want to get the results back from a worker thread to your main activity so you can do stuff with them. There are several parts to this.
- The main activity implements Handler.Callback, and has a handleMessage function.
 - When the worker thread is created, include a reference to the main activity.
 - In the worker thread constructor, create a Handler, including the reference to the main activity.
 - When some results need passing back, send a Message back to the main activity using the handler.
 
    public class MyActivity extends Activity implements Handler.Callback
    {
        //...
        // On create
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            //...
            WorkerThread worker = new WorkerThread(this);
        //...
        public boolean handleMessage(Message msg)
        {
        //...
    public class WorkerThread extends Thread
    {
        Handler handler;
        //...
        // Constructor
        public WorkerThread(Handler.Callback callback)
        {
            handler = new Handler(callback);
            //...
        private void someFunction()
        {
            handler.sendEmptyMessage(WHATEVER);
            // or
            Message msg = handler.obtainMessage(WHATEVER, thingy);
            handler.sendMessage(msg);
            //...
The handler will send the message back to the activity in the UI thread, so you can do whatever with the contents.
See Also
- Flutter app bar search widget
 - Android Navigation Menu
 - Update App Widget
 - Create a Word Grid
 - Android Flutter