Frage

Gibt es irgendwelche "Best Practices" für das Schreiben eines energieeffizienten Hintergrund Anwendung in Symbian?

Insbesondere ist es eine Möglichkeit, (das heißt API) für ein Symbian-App das Betriebssystem in Bezug auf den aktuellen Status, um anzudeuten, den Batterieverbrauch zu reduzieren? In Android, zum Beispiel gibt es den Begriff der Wake Locks , die das Gerät aus, die in den Standby-Modus verhindert - Gibt es etwas ähnliches in Symbian

EDIT:
Gibt es Auswirkungen, wenn den Code als separaten Thread mit der Open-C-Bibliothek und nicht als „native“ Symbian C ++ ausgeführt wird, Aktiv Objekte usw. verwenden? (Der Open-C-Code wird auf IO blockiert die meiste Zeit).

War es hilfreich?

Lösung

  1. Sie können mit einem RTimer :: Inaktivitäts () -Methode Benutzer (Un-) Tätigkeit überprüfen. Auf diese Weise ist in der Forum Nokia Wiki-Seite . Es es ist auch beschrieben, wie Sie Inaktivität Timer zurücksetzen.
  2. Sie können prüfen, ob Gerät Bildschirm ein- oder ausgeschaltet mit HAL API aktiviert ist. Siehe Klassen HAL und HALData. Sie können ein solcher Ruf verwenden:

TInt displayState; HAL::Get(HALData::EDisplayState, displayState); Und die display halten werden entweder 0, wenn Display aus oder 1 in anderem Fall gedreht wird.

Mit diesen APIs werden Sie wissen, ob Benutzer jetzt aktiv ist, so dass Sie zu ändern Verhalten Ihres Hintergrunddienst der Lage, den Stromverbrauch zu reduzieren.

Sie können auch a href verwenden <= "http://www.forum.nokia.com/info/sw.nokia.com/id/324866e9-0460-4fa4-ac53-01f0c392d40f/Nokia_Energy_Profiler.html" rel = „nofollow noreferrer“> Nokia Energy Profiler Anwendung auf Rekordstromverbrauch von Hörer, mit verschiedenen Energiesparoptionen Ihres Hintergrunddienst. Auch finden Sie in Nokias Dokument best Practices beschreiben Leistung von Gerät zu speichern. Dieses Dokument ist recht einfach, aber nützlich dennoch.

Hope, das hilft.

EDIT: Über separaten Thread und Open C. Soweit ich weiß, Open C ist nur ein Plugin und tief unten alle Implementierungen sind immer noch "native Symbian". Also, so weit wie Sie periodische Abfrage einiger Ressource und nur verwenden üblichen Sperr IO, Ihr Code vermeiden, ist ganz das gleiche wirtschaftlich auf Leistung als Standard Symbian Aktiv Objekte Techniken (die Block-Threads Symbian-spezifischen Semaphore verwenden).

Andere Tipps

Ich bin nicht gekommen, über etwas Besonderes in Symbain um das Gerät zu halten aus Stand-by-Modus. Grundsätzlich sind die „Best Practices“ würde das gleiche wie alle mobilen Geräte sein:

  • Do für Dinge nicht Warteschleife, verwenden Sie immer unabhängig von Dienstleistungen Signalisierung avaialble auf der Plattform, für Symbain ActiveObjects / User :: WaitForXXX
  • Begrenzen Sie die Anzahl der Hintergrundthreads (derzeit alle Mobilgeräte sind immer noch nur 1 CPU ...)
  • Do auf Systemdienste nicht hängen, schließen Sie sie so schnell wie möglich (dies normalerweise Drain meiner Hauptbatterie ist in meinen mobilen Anwendungen, manchmal versuchen zu finden, welches System Dienst verursacht die Entleerung der Batterie einen echten Schmerzen sein kann, WinMo ist sehr schlecht für dies).

Für mich finde ich, dass es meist zu einem Kompromiss kommt unten zwischen Akkulaufzeit und Leistung / Ansprechbarkeit für die Anwendung. Leider Leistung, dass mit der Leistung / Ansprechbarkeit Seite zu Seite zu sein scheint immer und verdammt die Batterie entladen .....

Geben Sie Ihre Anwendung mit niedriger Priorität (siehe RProcess und RThread Klassen). Ihr Ansatz wird wirklich davon abhängen, was Ihre Anwendung im Hintergrund tut. Diese Dinge verbrauchen die meisten. Akku: Radio (GSM / 3G / WiFi / Bluetooth), Bildschirmhintergrundbeleuchtung, Dateizugriffe

Symbian OS werden immer versuchen, Ihre Anwendung in dem Schlaf zu bringen, brauchen Sie nicht, es zu sagen, dies zu tun. So stellen Sie sicher, dass Ihr Ansatz gibt es die Möglichkeit, es in den Schlaf zu bringen.

Energiemanagement ist ein sehr wichtigstes Thema während Anwendung zu entwickeln.

In Symbian es hängt davon ab, was Sie verwenden Hintergrundaktivitäten auszuführen.

Ob Sie mit Gewinden oder ActiveX-Steuerelement.

Für Eg. Sie entwickeln Anwendung Browser, dass Sie den Browser herunterladen etwas dann wollen, dass im Hintergrund und in der Lage Aktivität Aktivität Download startet gehen soll und wenn Fortschritte zu zeigen, und wenn sie es wieder kommen, um vorderes Ende endet soll.

Es hängt davon ab, wie Sie Thread verwalten, wenn Sie Thread verwenden. Sie können wie die tun Thread, wenn die lange Zeit Aktivität beginnt, zu pausieren und wenn wieder aufzunehmen, wenn die Hintergrundaktivität beendet Ausführung hat ..

In der Tat ist dies das sehr gute Thema u über

gekommen sind

Es verwendete ein Inaktivitätszeitgeber zu sein, das zurückgesetzt von der Anwendung sein könnte. Dies würde verhindern, dass der Bildschirm aus, die in jeden Bildschirmschoner-Modus.

Wenn Sie die verschiedene asynchrone Funktion in Symbian verwenden, Ihre Anwendung ausgeführt werden soll, wenn angemessen.

Eine dieser Methoden sollte je nach Bedarf arbeiten. Wenn Sie beschreiben, was Sie genauer erreichen wollen würde es einfacher sein, Ihnen zu helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top