To improve (asynchronous) loading performance, use your own imageUpdate() method to override imageUpdate(). imageUpdate() can cause more repainting than you might want..
//wait for the width information to be loaded
while (image.getWidth(null) == -1 {
try {
Thread.sleep(200);
}
catch(InterruptedException e) {
}
}
if (!haveWidth) {
synchronized (im) {
if (im.getWidth(this) == -1) {
try {
im.wait();
}
catch (InterruptedException) {
}
}
}
//If we got this far, the width is loaded, we will never go thru
// all that checking again.
haveWidth = true;
}
...
public boolean imageUpdate(Image img, int flags, int x, int y, int width, \
int height) {
boolean moreUpdatesNeeded = true;
if ((flags&ImageObserver.WIDTH)!= 0 {
synchronized (img) {
img.notifyAll();
moreUpdatesNeeded = false;
}
}
return
moreUpdatesNeeded;
}
|