Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Завершение потока https://www.cyberforum.ru/android-dev/thread837042.html
Необходимо корректно завершить поток. Сейчас код такой class MyThread extends Thread { private void method() throws InterruptedException { ... }
Установка доступа к файлу на FTP сервере Программирование Android
Добрый день! Недавно начал программировать под Андроид. Есть задача - скопировать файл на FTP сервер и дать ему доступ на полное чтение. Скопировать удалось с помощью FTPClient ftpClient = new...
Программирование Android SDK or NDK
я начинающий разработчик, на данный момент не много знаю с++. 1) Что лучше изучать SDK и яву или же NDK, в будущем хочу попробовать себя в гейм деве. 2) Еще интересует с какими знаниями будет...
Программирование Android Остановка службы Служба может быть остановлена системой по разным причинам: нехватка памяти, режим экономии энергии... А можно ли запретить остановку службы ? https://www.cyberforum.ru/android-dev/thread836681.html
Программирование Android Как "отвязать" элементы https://www.cyberforum.ru/android-dev/thread836554.html
Доброго времени суток. Я недавно начал работать с ADT. Когда я добавляю любой элемент на форму, в xml. То он либо привязывается к другому элементу, либо встаёт в верхнем левом углу и не двигается...
Не отображается картинка в эмуляторе Программирование Android
Почему не выводится на экран картинка в эмуляторе?..причем на устройстве и в Эклипсе она отображается...в чем может быть дело?
Программирование Android Notification - запуск MainActivity
Здравствуйте! Есть Service который посылает запрос, парсит страницу и выводит notification. При нажатии на него открывается моя программа. Если при выводе notification запущена моя программа, и...
Программирование Android Ошибка при вызове приложения из другого приложения Сделано два простеньких приложения и я хочу чтобы одно приложение запускало другое. В приложении, которое будет запущено установлен фильтр и второе приложение запускает его по этому фильтру. При... https://www.cyberforum.ru/android-dev/thread836310.html
Программирование Android Обработка столкновений https://www.cyberforum.ru/android-dev/thread836267.html
Расскажите у кого какой опыт обработки столкновений при создании игр? два спрайта, должно фиксировать их столкновение, как это сделать? тупо при каждом обновлении потока проверять через координаты...
Программирование Android error: Apostrophe not preceded by \ (in \n Подскажите, что за ошибка?? https://www.cyberforum.ru/android-dev/thread835773.html
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
0

Ошибка в SurfaceView

13.04.2013, 23:16. Просмотров 1229. Ответов 4
Метки (Все метки)

есть игра.
отрисовка идет через SurfaceView и поток привязанный к нему.
ошибка возникает в следующем моменте - я открываю сам игровой поток, все нормально работает, скрываю приложение и когда я снова его открываю выходит ошибка.

логи прикрепил.

это код конструктора класса отрисовки
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public Game(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
            play = false;
        potok = new  Thread1(this);
            holder = getHolder();
            setFocusable(true);
            holder.addCallback(new SurfaceHolder.Callback()
            {
              public void surfaceDestroyed(SurfaceHolder holder)
                  {
                 Log.d(LOG_TAG, "удаление");
                      boolean retry = true;
                      potok.setRunning(false);
                      pos.clear();
                     
                       while (retry) {
                               try {
                                   potok.join();
                                     retry = false;
                               } catch (InterruptedException e) {
                               }
                        }
                  }
@Override
                  public void surfaceCreated(SurfaceHolder holder) 
                  {
    loadbitmap();
     Log.d(LOG_TAG, "создание");
        potok.setRunning(true);
        potok.start();
                  }
@Override
                  public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
                  {
    Log.d(LOG_TAG, "изменение");
                  }
           }
        );
        
}
это код потока
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class Thread1 extends Thread {
    private boolean running = true;
    int speed = 100;
    long timer;
    private Game game;
    
    public Thread1(Game game) 
    {
          this.game = game;
    }
 
    public void setRunning(boolean run) 
    {
          running = run;
    }
 
    long prevTime = System.currentTimeMillis();
    public void run() {
          while (running) {
             Canvas r  = null;
              long now = System.currentTimeMillis();
              long elapsedTime = now - prevTime;
              if (elapsedTime > speed){
                prevTime = now;
                timer = timer + elapsedTime;
 
                
                 try {
                        r = game.getHolder().lockCanvas();
                        synchronized (game.getHolder()) {
                               game.onDraw(r);
                               if (Game.play == true){
                                   game.onDraw1(r);
                               }
                         
                        }
                    
                 } finally {
                        if (r != null) {
                               game.getHolder().unlockCanvasAndPost(r);
                        }
                 }
          }
 
          }
          
}  
}
при повторном открывание доходит до тэга с созданием.
ошибка как я понял где то здесь
Java
1
2
3
4
5
6
7
 public void surfaceCreated(SurfaceHolder holder) 
                  {
    loadbitmap();
     Log.d(LOG_TAG, "создание");
        potok.setRunning(true);
        potok.start();
                  }


Вернуться к обсуждению:
Ошибка в SurfaceView
0
Вложения
Тип файла: txt log.txt (2.2 Кб, 6 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2013, 23:16
Готовые ответы и решения:

Восстановление SurfaceView
Кто работал с SurfaceView, помогите! Рисую на SurfaceView с помощью onTouchEvent(), без потока,...

SurfaceView не отображается
Учусь программировать по книге П. Дейтел, Х. Дейтел "Android для программистов. Создаём...

SurfaceView + onKeyDown
Проблемка очень простая - не реагирует на onKeyDown в классе, наследующем SurfaceView. Исправьте...

Мерцание в SurfaceView
Всем привет! Рисую на SurfaceView фон и на нем анимированные объекты. Кадры беру из атласа....

4
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.