我有一个连接到套接字服务器的应用程序,并在每次启动后下载图像。我想要实现的是将默认图像加载到ImageView字段中,并为用户提供完整的应用程序功能,同时应用程序从服务器下载图像。下载完成后,应该会自动替换ImageView中的图像。
我试图实现runOnUiThread()
,但它也会阻止UI线程并冻结应用程序一段时间。
我无法阻止用户界面的唯一时间是用户必须与应用程序交互时(按下按钮,触摸屏幕)。在这种情况下,内容的下载发生在后台线程中。按下按钮后会发生ImageView更新。
如何在后台线程中下载图像并自动将其更新到ImageView?
runOnUiThread()
实施的代码段(活动类中的方法):
private void updateImageThread() {
new Thread() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
//This loop blocks a UI thread
while(true){
bitmapImage = downloadImageThread.getBitmapImage();
//Pls note that DownloadImageThread is my implementation of the
//class that connects to the server via socket and downloadsan image.
//Method getBitmapImage() returns downloaded image as a bitmap.
if (bitmapImage != null){
mapImageView.setImageBitmap(bitmapImage);
mapImageView.invalidate();
break;
}
}
}
});
}
}.start();
}
答案 0 :(得分:1)