Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Rm1
0 / 0 / 0
Регистрация: 15.02.2015
Сообщений: 11
#1

SurfaceHolder (вылетает Активити) - Программирование Android

15.04.2015, 17:35. Просмотров 201. Ответов 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;
 }
 }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2015, 17:35     SurfaceHolder (вылетает Активити)
Посмотрите здесь:

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

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

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

Несколько Listview в 1 активити - Программирование Android
Ребят, как подключить 2 списка listview в одном активити?

Активити пропала 0_0 - Программирование Android
Здравствуйте коллеги! всех с профессиональным праздником! У меня такая проблема: запускаю приложение, у меня запускается предположим...

Не создается автоматическая активити - Программирование Android
Всем привет! Пытаюсь добавить в свое приложение кнопки соц.сетей - которые &quot;расскажи о нас друзьям&quot;. За основу взял вполне рабочий...

2 tabhost в один активити - Программирование Android
как это сделать ? как я не кручу у меня при tabHost.addTab(tabSpec); выводит нул поинт экзепшен :(( &lt;?xml version=&quot;1.0&quot;...

Активити не уходят из памяти - Программирование Android
Всем доброго дня! Очень прошу помощи. Ситуация следующая: Делаю приложение, от которого требуется постоянное перемещение...

Выбор активити из уведомления - Программирование Android
Добрый день. Есть у меня главная активити, которая, в общем-то, работатет в фоне и бросает уведомления. Проблема в том, что есть...

Передать данные в активити - Программирование Android
Здравствуйте, такой вопрос: есть несколько активити с данными и ещё одно активити,в которое нужно передать данные из всех прошлых. Как это...

Почему не создается 2 активити - Программирование Android
Добрый день, не могу понять в чем ошибка, не запускается 2 активити: public class MainActivity extends AppCompatActivity { ...

Открыть второй активити - Программирование Android
Раньше проблем с открытием второго активити через нажатие на кнопку не было. Создал xml, class, в манифесте прописал. Что-то упустил?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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