【发布时间】:2011-07-17 16:23:19
【问题描述】:
我有一个 getViewBitmap() 方法,它使用 3rd 方库(专有)创建位图,如下所示:
public Bitmap getViewBitmap(int index) {
Bitmap retBitmap = null;
int width = 400;
int height = 200;
try {
retBitmap = lib.createBitmap(width, height, index);
} catch(BMException e) {
e.printStacktrace();
}
return retBitmap;
}
此方法用于在另一种方法中创建两个页面视图位图:
public Bitmap getTwoPageBitmap(int firstPageIndex, intSecondPageIndex) {
Bitmap first = getViewBitmap(firstPageIndex);
Bitmap second = getViewBitmap(secondPageIndex);
Bitmap retBitmap = Bitmap.create(800, 400, first.getConfig());
Canvas helperCanvas = new Canvas(splitViewBm);
helperCanvas.drawBitmap(leftPageBitmap, 0, 0, null);
helperCanvas.drawBitmap(rightPageBitmap, leftPageBitmap.getWidth(), 0, null);
return retBitmap;
}
最后在启动方法中,我有这个:
public View createView() {
MyView v = new MyView();
if(pagePortratit) {
v.setPageView(getViewBitmap(0));
} else {
// if page is landscape
v.setPageView(getTwoPageBitmap(0, 1));
}
return v;
}
现在 - 我想让 getViewBitmap(int) 方法异步。由于“lib.createBitmap(int, int, int)”速度很慢并且会阻塞 UI,我希望在另一个线程中创建位图 (getViewBitmap(int))可能中断它的工作。
这种设计的正确设计是什么,以使实际上很重的方法异步?
【问题讨论】:
标签: java android multithreading android-asynctask