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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With