Войти
AndroidФорумОбщее

Запрет пересоздания Activity

Страницы: 1 2 Следующая »
#0
14:14, 22 мар. 2013

При развороте экрана или блокировки-разблокировке происходит пересоздание Активити.
разворот экрана я запретил а как быть с блокировкой?


#1
14:54, 22 мар. 2013

Научиться нормально обрабатывать?

#2
14:55, 22 мар. 2013

vitas212
> разворот экрана я запретил
ты запретил сам разворот? просто можно запретить пересоздание при развороте, а сам разворот оставить.

#3
15:41, 22 мар. 2013

        <activity
...
            android:configChanges="orientation|keyboardHidden"
...>
Может, есть флаг и на блокировку

#4
16:08, 22 мар. 2013

Нет такоо флага. Пользователь может просто выключить девайс и он заблокируется.

#5
16:14, 22 мар. 2013

Я не про флаг, запрещающий блокировку, а про флаг, запрещающий пересоздание при блокировке. Например, по умолчанию поворот экрана - это пересоздание активити, а можно сделать так, что при вращении экрана активити не пересоздаётся.

#6
17:29, 22 мар. 2013

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

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

Вроде как-то так.

#7
17:50, 22 мар. 2013

slava_mib
ЕМНИП, при блокировке уничтожается GL контекст, а уничтожение активити это уже следствие.

#8
18:03, 22 мар. 2013

trex
> ЕМНИП, при блокировке уничтожается GL контекст
Тем не менее, все игры даже на андроиде 2.3 при блокировке/разблокировке не перезагружаются и мгновенно продолжают и графику рисовать, и музыку крутить. То есть перезагрузки ресурсов никакой не происходит вообще. Как этого добиться?

#9
18:13, 22 мар. 2013

ALPINE
Если все данные уже в памяти и их надо просто залить в видеопамять (которая на самом деле на том же чипе находится), на это много времени не уйдет. Как вариант, можно в фоне держать еще один готовый к работе контекст, но это какой-то мутный путь.

#10
20:20, 22 мар. 2013

Меня тоже интересует этот вопрос. Делаю живые обои
public class MyWallpaperService extends GLWallpaperService
В манифесте прописал android:configChange
Добавил

@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
}
Каковым теперь должен быть следующий шаг, чтобы запретить вызов public void onSurfaceCreated(GL10 unused, EGLConfig config) при повороте экрана на 90 градусов?

#11
0:30, 23 мар. 2013

> ЕМНИП, при блокировке уничтожается GL контекст, а уничтожение активити это уже следствие.
trex, он не уничтожается, а ставится на паузу. Если в паузе не пытаться что-то с ним химичить - проблем не будет и после разблокировки в активити придёт сообщение что можно работать дальше.

#12
21:03, 23 мар. 2013

slava_mib
Я при onPause выставляю флаг, запрещающий перерисовку в onDrawFrame. Но при этом, всё равно сбрасывается контекст и вызывается onSurfaceCreated(GL10 unused, EGLConfig config) (экран ненадолго чернеет). Подскажи в какую сторону смотреть, чтобы обойти.

#13
22:29, 23 мар. 2013

В андроиде-3 и старше есть http://developer.android.com/reference/android/opengl/GLSurfaceVi… %28boolean%29

> Но при этом, всё равно сбрасывается контекст и вызывается onSurfaceCreated
То, что контекст сбрасывается - ничему не мешает. Надо просто перезагрузить потерянные текстуры и буферы и спокойно продолжать работу.

#14
1:41, 24 мар. 2013

slava_mib
> он не уничтожается, а ставится на паузу
Как контекст можно поставить на паузу?

Страницы: 1 2 Следующая »
AndroidФорумОбщее

Тема в архиве.