С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ошибка в SurfaceView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Завершение потока http://www.cyberforum.ru/android-dev/thread837042.html
Необходимо корректно завершить поток. Сейчас код такой class MyThread extends Thread { private void method() throws InterruptedException { ... }
Программирование Android Установка доступа к файлу на FTP сервере Добрый день! Недавно начал программировать под Андроид. Есть задача - скопировать файл на FTP сервер и дать ему доступ на полное чтение. Скопировать удалось с помощью FTPClient ftpClient = new... http://www.cyberforum.ru/android-dev/thread836933.html
Программирование Android SDK or NDK
я начинающий разработчик, на данный момент не много знаю с++. 1) Что лучше изучать SDK и яву или же NDK, в будущем хочу попробовать себя в гейм деве. 2) Еще интересует с какими знаниями будет...
Остановка службы Программирование Android
Служба может быть остановлена системой по разным причинам: нехватка памяти, режим экономии энергии... А можно ли запретить остановку службы ?
Программирование Android Как "отвязать" элементы http://www.cyberforum.ru/android-dev/thread836554.html
Доброго времени суток. Я недавно начал работать с ADT. Когда я добавляю любой элемент на форму, в xml. То он либо привязывается к другому элементу, либо встаёт в верхнем левом углу и не двигается...
Программирование Android Не отображается картинка в эмуляторе Почему не выводится на экран картинка в эмуляторе?..причем на устройстве и в Эклипсе она отображается...в чем может быть дело? подробнее

Показать сообщение отдельно
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101

Ошибка в SurfaceView - Программирование Android

13.04.2013, 23:16. Просмотров 1013. Ответов 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();
                  }
0
Вложения
Тип файла: txt log.txt (2.2 Кб, 5 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.