Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handling UI from other thread

I have a class which extends the Runnable. This class performs some heavy operation (basically downloads the image from network) in different thread. I want to update the UI (display the downloaded image to an ImageView) from this class. I have tried using handler but did not succeed. Here is my code:

class DataReceiver implements Runnable
{
    public Bitmap bmp;
    Public Handler uiHandle;
    @Override
    public void run()
    {
        while(true)
        {
            //do image download process here
        }
    }
}

In main activity

ImageView img = (ImageView)findViewById(R.id.dispImg);
DataReceiver dr=new DataReceiver();

Handler uiHandler = new Handler()
{
    @Override
    public void handleMessage(Message msg)
    {
        updateUI();
    }
}

dr.uiHandle = uiHandler;
(new Thread(dr)).start();

public void updateUI()
{
    img.setBitmap(dr.bmp);
}

Is it the correct method for updating UI?

like image 310
Vinod Maurya Avatar asked Feb 02 '26 19:02

Vinod Maurya


1 Answers

You could use AsyncTask instead, do what you're currently doing in run() in doInBackground, and then do the UI update in the task's onPostExecute.

like image 122
Ben Williams Avatar answered Feb 04 '26 13:02

Ben Williams



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!