Многопоточность на android

192
22 марта 2019, 19:10

Я разрабатываю приложение под android, и уже в течении долгого времени не могу решить одну проблему, а именно:

У меня есть фрагмент, в котором surfaceview с потоком рисования для постоянной перерисовки. Само рисование работает отлично, но вот переключение между страницами - это целая проблема. Я пробовал кучу способов, дабы решить эту проблему. Executor использовал, пробовал возвращать return при переключении, ещё несколько способов и всё без толку. Вот мой код создания surfaceview

 @Override
 public void surfaceCreated(SurfaceHolder holder) {
    if (drawThread == null || drawThread.getState() == Thread.State.TERMINATED) {
        drawThread = new DrawThread(getHolder(), getContext());
        drawThread.setRunning(true);
        executorThread.submit(drawThread);
    }
    if (!drawThread.isAlive())
        drawThread.start();

Это мой последний вариант реализации создания потока рисования в surfaceview В методе surfaceDestroyed() ничего нет на данный момент. Вот поток рисования:

public void run() { 
    Canvas canvas;
    while (mRunning) {
        canvas = null;
        try {
            canvas = mSurfaceHolder.lockCanvas();
            synchronized (mSurfaceHolder) {
                drawGridLine(canvas);
                drawGridText(canvas);
                drawAxis(canvas);
                if (!isOverMathCalc && !isZoom)
                    drawGraphics(canvas);
            }
        } catch (NullPointerException e) { /* */ }
        finally {
            if (canvas != null)
                mSurfaceHolder.unlockCanvasAndPost(canvas);
        }
    }
} 

Как мне сделать нормальное завершение потока рисования и потом очередной его запуск после того, как мы опять перешли на страницу рисования. Так как иначе при переключении фрагментов программа тормозит, переключение происходит при помощи NavigatorDrawer.

READ ALSO
как получить все магазины из google maps?

как получить все магазины из google maps?

Вот если зайти на саму карту гугл и ввести в поиск магазины, то будет примерно такой результат

164
Координаты курсора javascript

Координаты курсора javascript

Как постоянно получать координаты курсора по X и Y с помощью Javascript?

152
Ошибка в скрипте? на safari и ie - display: none не срабатывает

Ошибка в скрипте? на safari и ie - display: none не срабатывает

Не могу скрыть в указанных браузерах один параграфМне нужно убрать предложение о бесплатном звонке именно из safari и ie, т

154