Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.09.2015, 15:06
alecsisk вне форума Посмотреть профиль Отправить личное сообщение для alecsisk Найти все сообщения от alecsisk
  № 1  
Ответить с цитированием
alecsisk

Регистрация: Feb 2008
Адрес: N.Novgorod
Сообщений: 80
Отправить сообщение для alecsisk с помощью ICQ
Cool Падение fps в неактивном режиме

Всем привет.
Заметил что в фоне приложение перестает работать. Был слеплен анализатор, который выводит логи в файл. Оказывается air принудительно занижает fps после нескольких минут работы до 0, что мне совсем не нужно. Что я пробывал:
Код AS3:
URLRequestDefaults.idleTimeout = ApplicationSettings.IDLE_TIMEOUT; // 1000 * 60 * 60000
//NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
NativeApplication.nativeApplication.executeInBackground = true;
NativeApplication.nativeApplication.idleThreshold = 85000;
а также
Код AS3:
stage.frameRate = 30;
по таймеру, по onDeactivate

Ничего из вышеперечисленного мне не помогло. Fps все равно проседает до 0. Смотрю fps так:
Код AS3:
var fps:int = framesNumber / ((getTimer() - startTime) / 1000)
air sdk compiler: 18.0.0.180
air installer: 18.0.0.199

Есть идеи?

Старый 07.09.2015, 15:57
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Зачем вам это нужно?
AIR и FlashPlayer понижают фпс для экономии ресурсов и батареи.

Старый 08.09.2015, 04:24
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 3  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от alecsisk Посмотреть сообщение
Всем привет.
Заметил что в фоне приложение перестает работать. Был слеплен анализатор, который выводит логи в файл. Оказывается air принудительно занижает fps после нескольких минут работы до 0, что мне совсем не нужно. Что я пробывал:
Код AS3:
URLRequestDefaults.idleTimeout = ApplicationSettings.IDLE_TIMEOUT; // 1000 * 60 * 60000
//NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
NativeApplication.nativeApplication.executeInBackground = true;
NativeApplication.nativeApplication.idleThreshold = 85000;
а также
Код AS3:
stage.frameRate = 30;
Я в ручную выполняю это действие. Суть в том, что-бы при переходе в трей, минимализировать расход ресурсов. Если этого не сделать, системный сборщик мусора может удалить приложения из трея, для освобождения памяти. К примеру Андроид, если ему не хватает оперы для активного процесса, начинает убивать фоновые. По списку от наибольшего к наименьшему кол-ву выделяемых ресурсов системой. Иногда такое возникает даже при переходе/открытии браузера из приложения
Код AS3:
public function enable(stage:Stage, view:Class):void {
	Debug.log( 'StarlingService enable');
	if (!_starling) {
 
		Starling.handleLostContext = true;
		Starling.multitouchEnabled = true;
 
		_starling = new Starling(view, stage);
 
		_starling.addEventListener(starling.events.Event.ROOT_CREATED, onStarlingEvent);
 
		_starling.addEventListener(starling.events.Event.CONTEXT3D_CREATE, onStarlingEvent);
		_starling.addEventListener(starling.events.Event.FATAL_ERROR, onStarlingEvent);
		_starling.addEventListener(starling.events.Event.PARSE_ERROR, onDebugEvent);
		_starling.addEventListener(starling.events.Event.IO_ERROR, onDebugEvent);
		_starling.addEventListener(starling.events.Event.TEXTURES_RESTORED, onDebugEvent);
 
		_starling.simulateMultitouch = true;
		_starling.antiAliasing = 0;
		_starling.showStats = false;
 
		_starling.enableErrorChecking = false;
		_starling.start();
 
		this.stage = stage;
 
		this.stage.addEventListener(flash.events.Event.RESIZE, stage_resizeHandler, false, int.MAX_VALUE, true);
 
 
		NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvokeEvent); 
		// "solt"
		if(Capabilities.cpuArchitecture == "ARM" || sleepMode ) {
			NativeApplication.nativeApplication.addEventListener(flash.events.Event.DEACTIVATE, stage_deactivateHandler, false, 0);
		}
	}
}
 
protected function onInvokeEvent(event:InvokeEvent):void
{
	Debug.log('Invoke'+event.reason+' :: '+event.arguments) 
}
 
private function onDebugEvent(e:starling.events.Event):void
{
	Debug.log('onDebugEvent > '+e.data+':'+this);
}
 
private function onStarlingEvent(e:starling.events.Event):void
{
	Debug.log(e.data+' > '+e.type+' : '+this);
 
	switch (e.type) {
		case starling.events.Event.CONTEXT3D_CREATE:
			contextCreated = true;
			break;
 
		case starling.events.Event.ROOT_CREATED:
			rootCreated = true;
			break;
 
		case starling.events.Event.FATAL_ERROR:
			Debug.alert(this,e.type);
			return;
	}
	if (contextCreated && rootCreated)
		this.dispatchEvent( new flash.events.Event(BaseStarlingService.STARLING_ON_READY ) );
}
 
public function get starling():Starling {
	return _starling;
}
 
private function stage_resizeHandler(event:flash.events.Event):void
{
	_starling.stage.stageWidth = this.stage.stageWidth;
	_starling.stage.stageHeight = this.stage.stageHeight;
 
	const viewPort:Rectangle = _starling.viewPort;
 
	viewPort.width = this.stage.stageWidth;
	viewPort.height = this.stage.stageHeight;
	try
	{
		_starling.viewPort = viewPort;
	}
	catch(error:Error) {}
}
 
private function stage_deactivateHandler(event:flash.events.Event):void
{
	_starling.stop(true);
 
	Starling.current.nativeStage.frameRate = .1; // Starling.current.nativeStage = stage reference
 
	NativeApplication.nativeApplication.addEventListener(flash.events.Event.ACTIVATE, stage_activateHandler, false, 0, true);
}
 
private function stage_activateHandler(event:flash.events.Event):void
{			
	NativeApplication.nativeApplication.removeEventListener(flash.events.Event.ACTIVATE, stage_activateHandler);
 
	Starling.current.nativeStage.frameRate = 60; 
 
	_starling.start();
 
	if  (  this.stage )  this.stage.quality = this.stage.quality ;
 
}
Цитата:
Сообщение от alecsisk Посмотреть сообщение
Ничего из вышеперечисленного мне не помогло. Fps все равно проседает до 0. Смотрю fps так:
Код AS3:
var fps:int = framesNumber / ((getTimer() - startTime) / 1000)
чем у объекта stage геттер frameRate не нравится?

Цитата:
Сообщение от alecsisk Посмотреть сообщение
Есть идеи?
Есть достаточно функциональный велосипед для отладки, который сам использую.
__________________
return this...


Последний раз редактировалось AlexCooper; 08.09.2015 в 04:56.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.