开发者

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());
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜