Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Rm1
0 / 0 / 0
Регистрация: 15.02.2015
Сообщений: 11
1

SurfaceHolder (вылетает Активити)

15.04.2015, 17:35. Просмотров 259. Ответов 0
Метки нет (Все метки)

Всем привет! Не знаю, с какой стороны подступиться к решению следующей проблемы: захожу в Активити, после этого возвращаюсь в меню, а затем снова пытаюсь из меню зайти в ту же Активити. При втором заходе выскакивает ошибка Out of memory и открывается Choreographer.class со стрелкой на строку с закрывающейся скобкой после mCallbacksRunning = true;

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void doCallbacks(int callbackType, long frameTimeNanos) {
        CallbackRecord callbacks;
        synchronized (mLock) {
            // We use "now" to determine when callbacks become due because it's possible
            // for earlier processing phases in a frame to post callbacks that should run
            // in a following phase, such as an input event that causes an animation to start.
            final long now = SystemClock.uptimeMillis();
            callbacks = mCallbackQueues[callbackType].extractDueCallbacksLocked(now);
            if (callbacks == null) {
                return;
            }
            mCallbacksRunning = true;
        }
        try {
            for (CallbackRecord c = callbacks; c != null; c = c.next) {
                if (DEBUG) {
                    Log.d(TAG, "RunCallback: type=" + callbackType
                            + ", action=" + c.action + ", token=" + c.token
                            + ", latencyMillis=" + (SystemClock.uptimeMillis() - c.dueTime));
                }
                c.run(frameTimeNanos);
            }

Активити имеет вот такую форму:

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
public class Test extends SurfaceView implements SurfaceHolder.Callback{
public Test(Context context) {
 super(context);
 getHolder().addCallback(this);
}
 
         public void surfaceCreated(SurfaceHolder holder) { 
     updateThread = new UT(this);
     updateThread.setRunning(true);
     updateThread.start();
     }
 
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
     }
 
     public void surfaceDestroyed(SurfaceHolder holder) {    
     boolean retry = true;
     updateThread.setRunning(false);
     while (retry) {
     try {updateThread.join();
     retry = false; } 
     catch (InterruptedException e) {
     }
     }
     }
    }
Ну и код класса Update Tread

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
public class UT extends Thread {
 
 private long time;
 private final int fps = 20;
 private boolean toRun = false;
 private Test Test;
 private SurfaceHolder surfaceHolder;
 
 public UT(Test rTest) {
 Test = rTest;
 surfaceHolder = Test.getHolder();
 }
 
 public void setRunning(boolean run) {
 toRun = run;
 }
 
 @SuppressLint("WrongCall")
@Override
 public void run() {
 Canvas c;
 while (toRun) {
 
 long cTime = System.currentTimeMillis();
 
 if ((cTime - time) <= (1000 / fps)) {
 
 c = null;
 try {
 c = surfaceHolder.lockCanvas(null);
 Test.onDraw(c);
 } finally {
 
 if (c != null) {
 surfaceHolder.unlockCanvasAndPost(c);
 }
 }
 }
 time = cTime;
 }
 }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2015, 17:35
Ответы с готовыми решениями:

Приложение вылетает после перехода на второе активити
Здравствуйте! Помогите разобраться с причиной вылета второго активити. Код...

Приложение вылетает после перехода на новое активити
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Программа...

На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити
Сделал меню в виде ListView. При клике на меню запускаются активити. На...

Как вызвать метод в активити классе из обычного не активити класса?
Есть активити в котором вводятся логин и пароль. При нажатии кнопки &quot;войти&quot; в...

Отображение активити поверх другого активити
Ребят подскажите пожалуйста как такое сделать. Есть активити с картой, по...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2015, 17:35

Вызов новой активити не из класса активити
Есть 4 класса: 1) WelcomeActivity; 2) MainActivity; 3) PopUpActivity; 4)...

Изменение параметров активити из другого активити
Как сделать так чтобы из первого активити поменять final ImageView...

Активити
Не могу вызвать второе Activity


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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