У меня есть метод getViewBitmap (), который создает растровое изображение со сторонней библиотекой (которая является проприетарной) и выглядит следующим образом:
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) " довольно медленный и блокирует пользовательский интерфейс, я хочу, чтобы создание растрового изображения (getViewBitmap (int)) находилось в другом потоке с возможностьюпрервать его работу.
Каков правильный дизайн для такой конструкции, чтобы действительно тяжелый метод стал асинхронным?