我有一个getViewBitmap()方法,它创建一个带有第三方库(专有)的Bitmap,如下所示:
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))在另一个线程中,打断它的工作的可能性。
这种设计的正确设计是什么,以便实际重的方法是异步的?