From 2f7753e532a376eac81d41def51c43cb0588d18b Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Wed, 13 May 2015 17:10:53 +0100 Subject: [PATCH] run page preparing in dedicated thread --- .../ui/android/view/ZLAndroidWidget.java | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java b/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java index 3f1f48137..3c7c047f6 100644 --- a/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java +++ b/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidWidget.java @@ -19,6 +19,9 @@ package org.geometerplus.zlibrary.ui.android.view; +import java.util.concurrent.Executors; +import java.util.concurrent.ExecutorService; + import android.content.Context; import android.graphics.*; import android.util.AttributeSet; @@ -32,6 +35,8 @@ import org.geometerplus.zlibrary.core.view.ZLViewWidget; import org.geometerplus.android.fbreader.FBReader; public class ZLAndroidWidget extends View implements ZLViewWidget, View.OnLongClickListener { + public final ExecutorService PrepareService = Executors.newSingleThreadExecutor(); + private final Paint myPaint = new Paint(); private final BitmapManager myBitmapManager = new BitmapManager(this); private Bitmap myFooterBitmap; @@ -281,25 +286,28 @@ public class ZLAndroidWidget extends View implements ZLViewWidget, View.OnLongCl myBitmapManager.setSize(getWidth(), getMainAreaHeight()); canvas.drawBitmap(myBitmapManager.getBitmap(ZLView.PageIndex.current), 0, 0, myPaint); drawFooter(canvas, null); - new Thread() { - @Override + post(new Runnable() { public void run() { - final ZLView view = ZLApplication.Instance().getCurrentView(); - final ZLAndroidPaintContext context = new ZLAndroidPaintContext( - canvas, - new ZLAndroidPaintContext.Geometry( - getWidth(), - getHeight(), - getWidth(), - getMainAreaHeight(), - 0, - 0 - ), - view.isScrollbarShown() ? getVerticalScrollbarWidth() : 0 - ); - view.preparePage(context, ZLView.PageIndex.next); + PrepareService.execute(new Runnable() { + public void run() { + final ZLView view = ZLApplication.Instance().getCurrentView(); + final ZLAndroidPaintContext context = new ZLAndroidPaintContext( + canvas, + new ZLAndroidPaintContext.Geometry( + getWidth(), + getHeight(), + getWidth(), + getMainAreaHeight(), + 0, + 0 + ), + view.isScrollbarShown() ? getVerticalScrollbarWidth() : 0 + ); + view.preparePage(context, ZLView.PageIndex.next); + } + }); } - }.start(); + }); } @Override