Domanda

Ci sono delle "buone pratiche" per la scrittura di una potenza efficiente sfondo applicazione in Symbian?

In particolare, c'è qualche modo (cioè API) per un'applicazione Symbian OS approssimare il relativo stato corrente per ridurre il consumo della batteria? In Android, per esempio, v'è la nozione di sveglia Serrature , che impedisce il dispositivo entri in modalità standby -? C'è qualcosa di simile in Symbian

Modifica
Ci sono delle implicazioni quando si esegue codice come un thread separato con la libreria Open-C, e non come "nativo" Symbian C ++, utilizzando gli oggetti attivi, ecc? (Il codice open-C sta bloccando sul IO maggior parte del tempo).

È stato utile?

Soluzione

  1. È possibile controllare utente (in-) di attività con un metodo RTimer :: Inattività (). In questo modo è descritto in Forum Nokia Wiki page . C'è anche descritto come è possibile ripristinare timer di inattività.
  2. È possibile verificare se schermo del dispositivo è acceso o spento usando HAL API. Vedere classi HAL e HALData. È possibile utilizzare tale chiamata a:

TInt displayState; HAL::Get(HALData::EDisplayState, displayState); E il displayState dovrà detenere 0 se il display è spento o 1 in altri casi.

Con queste API si sa se l'utente è attivo, in modo che sarete in grado di far cambiare le abitudini del vostro servizio in background per ridurre il suo consumo di energia.

È anche possibile utilizzare Nokia Energy Profiler applicazione per il consumo di energia record di telefono, con diverse opzioni di risparmio energetico del vostro servizio in background. Inoltre si prega di fare riferimento al Nokia documento che descrive le migliori pratiche per risparmiare energia del dispositivo. Questo documento è abbastanza semplice, ma utile comunque.

Spero che questo aiuti.

Modifica Informazioni su thread separato e Open C. Per quanto ne so, Open C è solo un plugin e in fondo tutte le implementazioni sono ancora "Symbian". Quindi, per quanto si evita il polling periodico di alcune risorse e basta usare al solito il blocco IO, il codice è abbastanza economico stessa sul potere come Symbian tecniche oggetti attivi standard (che utilizzano Symbian semafori specifici per le discussioni di blocco).

Altri suggerimenti

Non ho incontrato qualcosa di speciale in Symbain per mantenere il dispositivo di stand-by. In sostanza le "buone pratiche" sarebbe lo stesso di tutti i dispositivi mobili:

  • Non ciclo di attesa per le cose, utilizzare sempre indipendentemente servizi avaialble segnalazione sulla piattaforma, per Symbain ActiveObjects / User :: WaitForXxx
  • Limitare il numero di thread in background (attualmente tutti i dispositivi mobili sono ancora solo 1 CPU ...)
  • Non appendere su servizi di sistema, chiuderli ASAP (questo è normalmente il mio esaurimento della batteria principale nelle mie applicazioni mobili, a volte cercando di trovare quale servizio di sistema fa sì che lo scarico più batteria può essere un vero e proprio dolore, WinMo è molto negativo per questo).

Per quanto mi riguarda, trovo che si tratta per lo più verso il basso per un compromesso tra durata della batteria e prestazioni / risposta per l'applicazione. Purtroppo potere che sempre sembrano lato con il lato prestazioni / capacità di risposta e al diavolo il consumo di batteria .....

Dare la priorità bassa applicazione (vedi classi RProcess e RThread). Il vostro approccio sarà davvero dipenderà da ciò che fa la tua applicazione in background. Queste cose consumano più batteria:. Radio (GSM / 3G / WiFi / Bluetooth), retroilluminazione dello schermo, gli accessi di file

Symbian OS sarà sempre cercare di mettere l'applicazione per il sonno, non c'è bisogno di dire che per fare questo. Basta assicurarsi che il vostro approccio dà la possibilità di metterlo a dormire.

La gestione dell'alimentazione è un problema molto più importante, mentre lo sviluppo di applicazioni.

In Symbian dipende da quello che si utilizza per eseguire attività in background.

Sia che si utilizzi discussione o il controllo ActiveX.

Per esempio. si sta sviluppando browser dell'applicazione che si desidera che il browser per scaricare qualcosa, allora che il download di attività dovrebbe andare in background e di attività in grado inizia e quando mostrare progressi e quando finisce si deve ancora venire a prua.

Dipende da come si gestisce discussione se si utilizza thread. Si può fare come quale thread per mettere in pausa quando il lungo tempo attività che si inizia e quando riprendere quando l'attività di fondo è l'esecuzione finiture ..

In realtà questo è l'ottimo argomento u hanno incontrato

Ci deve essere utilizzato un timer di inattività che potrebbe essere ripristinato dall'applicazione. Ciò impedirebbe lo schermo da andare in qualsiasi modalità screen saver.

Se si utilizza la funzione di vari asincrona in Symbian, la vostra applicazione sarà eseguito al momento opportuno.

Uno di questi metodi dovrebbe funzionare a seconda delle esigenze. Se si descrive ciò che si vuole raggiungere in modo più dettagliato sarebbe più facile per aiutarvi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top