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 = u开发者_C百科iHandler;
(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.
almost ;D you need on the class thread add the that linebefore while do:
while(true)
{
//do image download process here
}
uiHandle.sendEmptyMessage(0);
To update the UI from another thread use
activity.runOnUIThread(new Runnable());
精彩评论