Skip to content

Commit 886c47f

Browse files
author
Taylor Perkins
committed
Ensure that we always load bitmaps (even assets) on a background thread.
When that is done we can call postInvalidate to signal from any thread that this view needs to be redrawn.
1 parent b35a665 commit 886c47f

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/com/qozix/tileview/samples/SampleManager.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.graphics.Rect;
77
import android.view.View;
88

9+
import com.qozix.os.AsyncTask;
910
import com.qozix.tileview.detail.DetailLevel;
1011
import com.qozix.tileview.detail.DetailLevelEventListener;
1112
import com.qozix.tileview.detail.DetailManager;
@@ -21,6 +22,7 @@ public class SampleManager extends View implements DetailLevelEventListener {
2122

2223
private Bitmap bitmap;
2324
private String lastFileName;
25+
private String currentFileName;
2426

2527
public SampleManager( Context context, DetailManager dm ) {
2628

@@ -42,14 +44,24 @@ public void clear(){
4244
lastFileName = null;
4345
}
4446

47+
private class BitmapDecodeTask implements Runnable {
48+
@Override
49+
public void run() {
50+
bitmap = decoder.decode(currentFileName, getContext());
51+
postInvalidate();
52+
}
53+
}
54+
55+
private BitmapDecodeTask decodeTask = new BitmapDecodeTask();
56+
4557
public void update() {
4658
DetailLevel detailLevel = detailManager.getCurrentDetailLevel();
4759
if( detailLevel != null ) {
4860
String fileName = detailLevel.getDownsample();
4961
if( fileName != null ) {
5062
if( !fileName.equals( lastFileName ) ) {
51-
bitmap = decoder.decode( fileName, getContext() );
52-
invalidate();
63+
currentFileName = fileName;
64+
AsyncTask.execute(decodeTask);
5365
}
5466
}
5567
lastFileName = fileName;

0 commit comments

Comments
 (0)