Om utformning av mobilprogram

Det sätt på vilket mobilenheter används, och deras fysiska egenskaper, ställer stora krav på omsorgsfull kodning och design. Det är till exempel viktigt att effektivisera kod så att den körs så fort som möjligt. Men även kodoptimering har gränser; smart design som är anpassad efter enhetens begränsningar kan också bidra till att den visuella presentationen av ditt program inte överbelastar systemet.

Kod

Det är förstås alltid bra om koden är så snabb som möjligt, men den långsammare processorhastigheten på många mobilenheter innebär att kodoptimeringar för mobila plattformar ger avsevärt större utväxling. Dessutom drivs mobilenheter nästan alltid med batterier. Om det går att uppnå samma resultat med mindre arbete räcker batterierna längre.

Design

Det är viktigt att ta hänsyn till faktorer som den lilla skärmstorleken, interaktionen med pekskärmen och de många olika miljöer mobilen används i så att du kan designa ditt program på bästa sätt.

Kod och design i samverkan

Om programmet använder animeringar är återgivningsoptimering mycket viktigt. Men ofta räcker det inte med bara kodoptimering. Du måste utforma de visuella aspekterna av programmet på ett sådant sätt att koden kan återge dem effektivt.

Viktiga optimeringstekniker behandlas i handboken Optimera prestanda för Flash-plattformar . De tekniker som behandlas i handboken gäller allt Flash- och AIR-innehåll, men är avgörande för att utveckla program som fungerar bra på mobilenheter.

Programmets livscykel

När ditt program tappar fokus till ett annat program sänks bildrutefrekvensen i AIR till 4 bildrutor per sekund och grafiken upphör att återges. Under den här bildrutefrekvensen har anslutningar till direktuppspelningsnätverk och socketar en tendens att brytas. Om ditt program inte använder sådana anslutningar kan du sänka bildrutefrekvensen ännu mer.

När det är lämpligt bör du även stoppa ljuduppspelningar och ta bort avlyssnare för geolocation- och accelerometersensorerna. AIR-objektet NativeApplication skickar aktiverings- och inaktiveringshändelser. Använd de här händelserna för att hantera övergången mellan det aktiva läget och bakgrundsläget.

De flesta mobiloperativsystem avslutar bakgrundsprogram utan någon förvarning. Genom att spara programläget ofta bör ditt program kunna återställas till ett rimligt läge, vare sig det återgår till aktiv status från bakgrunden eller startas på nytt.

Informationstäthet

Den fysiska skärmstorleken på mobila enheter är mindre än en datorskärm, men pixeltätheten (pixlar per tum) är högre. En och samma teckenstorlek ger bokstäver som rent fysiskt är mindre på en mobilskärm än på en vanlig datorskärm. Du måste ofta använda en större teckenstorlek för att texten ska vara läsbar. I allmänhet kan man säga att 14 punkter är den minsta teckenstorlek som går att läsa.

Mobila enheter används ofta i rörelse och under svaga ljusförhållanden. Fundera över hur mycket information som det är realistiskt att visa på skärmen om den ska vara läsbar. Det kan vara mindre än det som visas på en datorskärm med samma pixelmått.

Tänk också på att när användaren rör skärmen döljer fingret och handen en del av skärmen. Placera interaktiva element längs skärmens sidor och nederkant, om användaren måste interagera med dem mer än genom att bara röra vid dem.

Textinmatning

Många enheter har ett virtuellt tangentbord för textinmatning. Virtuella tangentbord kan dölja delar av skärmen och kan även vara klumpiga att använda. Undvik att förlita dig på tangentbordshändelser (med undantag för valknappar).

Den kan även vara en bra idé att implementera alternativ till inmatning i textfält. Om du till exempel vill att användaren ska ange ett numeriskt värde behöver du inte använda ett textfält. Du kan istället använda två knappar för att höja eller sänka ett värde.

Valknappar

Mobilenheter har ett antal valknappar. Valknappar är knappar som kan programmeras med olika funktioner. Följ plattformskonventionerna för de här knapparna i ditt program.

Ändringar av skärmorientering

Mobilinnehåll kan visas med stående eller liggande orientering. Fundera över hur du vill att ditt program ska hantera ändringar av skärmorienteringen. Mer information finns i Scenorientering .

Skärmnedtoning

I AIR hindras skärmen inte automatiskt från att tonas ned vid uppspelning av video. Du kan använda egenskapen systemIdleMode för AIR-objektet NativeApplication för att styra om enheten ska gå in i energisparläge. (På vissa plattformar måste du begära nödvändig behörighet för att den här funktionen ska fungera.)

Inkommande telefonsamtal

I AIR-miljön stängs ljudet automatiskt av när användaren ringer eller tar emot ett telefonsamtal. På Android bör du ange Android-behörigheten READ_PHONE_STATE i programbeskrivningen om ditt program spelar upp ljud när det är i bakgrunden. Annars kan AIR-miljön inte identifiera telefonsamtal och stänga av ljudet automatiskt. Läs mer i Android-behörigheter .

Träffytor

Tänk på storleken på träffytorna när du utformar knappar och andra element i användargränssnittet som användaren kan trycka på. Gör dessa element tillräckligt stora för att lätt kunna aktiveras med ett finger på pekskärmen. Se också till att du har tillräckligt med utrymme mellan träffytorna. Träffytan bör vara ungefär 44 till 57 pixlar på var sida för en vanlig telefonskärm med hög upplösning.

Installationsstorlek för programpaket

Mobilenheter har vanligtvis betydligt mindre lagringsutrymme för installation av program och data än stationära datorer. Minimera paketstorleken genom att ta bort resurser och bibliotek som inte används.

På Android packas programpaketet inte upp till separata filer när programmet installeras. I stället expanderas resurserna till en tillfällig lagringsplats när de behövs. Du kan minimera det utrymme som krävs för den här expanderade resurslagringen genom att stänga fil- och URL-strömmar när resurserna har lästs in helt.

Filsystemåtkomst

Olika mobiloperativsystem har olika filsystembegränsningar, och dessa begränsningar brukar skilja sig från de som gäller för operativsystem på stationära datorer. Var det är bäst att spara filer och data kan därför också variera från en plattform till en annan.

En följd av variationerna i filsystemen är att genvägar till vanliga kataloger, som finns i AIR-klassen File, inte alltid är tillgängliga. Följande tabell visar vilka genvägar som kan användas på Android och iOS:

Android

iOS

File.applicationDirectory

Skrivskyddad via URL (ingen systemsökväg)

Skrivskyddad

File.applicationStorageDirectory

Tillgängligt

Tillgängligt

File.cacheDirectory

Tillgängligt

Tillgängligt

File.desktopDirectory

Roten för sdcard

Inte tillgängligt

File.documentsDirectory

Roten för sdcard

Tillgängligt

File.userDirectory

Roten för sdcard

Inte tillgängligt

File.createTempDirectory()

Tillgängligt

Tillgängligt

File.createTempFile()

Tillgängligt

Tillgängligt

Apples riktlinjer för iOS-program innehåller särskilda regler om vilka lagringsplatser som ska användas för filer i olika situationer. En av dessa riktlinjer anger till exempel att endast filer som innehåller användarangivna data, eller data som inte kan återskapas eller hämtas igen, bör lagras i en katalog som är avsedd för fjärrsäkerhetskopiering. Information om hur du uppfyller Apples riktlinjer för säkerhetskopiering och cachning finns i Hantera säkerhetskopiering och cachning av filer .

Gränssnittskomponenter

Adobe har utvecklat en mobiloptimerad version av Flex-ramverket. Mer information finns i Utveckla mobilprogram med Flex och Flash Builder .

Det finns även komponentprojekt på nätet som lämpar sig för mobilprogram. Dessa inkluderar:

3D-accelererad grafikåtergivning för scenen

Från och med AIR 3.2 har AIR för mobilen stöd för 3D-accelererad grafikåtergivning för scenen. ActionScript API:erna för Stage3D är en uppsättning av GPU-accelererade API:er på lågnivå för aktivering av avancerade 2D- och 3D-funktioner. Dessa lågnivå-API:er ger utvecklarna flexibilitet att anpassa GPU-maskinvaruacceleration för att få avsevärda prestandavinster. Du kan även använda spelmotorer som har stöd för ActionScript-API:er för Stage3D.

Mer information finns på Gaming engines, 3D, and Stage 3D .

Videoutjämning

Videoutjämning är inaktiverat i AIR för att ge bättre prestanda.

Systemspecifika funktioner

Många mobilplattformar har funktioner som ännu inte är tillgängliga via standard-API:erna i AIR. Från och med AIR 3 kan du utöka AIR med egna systemspecifika kodbibliotek. Via dessa systemspecifika bibliotek kan du komma åt funktioner i operativsystemet eller funktioner som är specifika för en viss enhet. Du kan skriva ANE-tillägg i C på iOS och i Java eller C på Android. Mer information om hur du utvecklar ANE-tillägg finns i Introducing native extensions for Adobe AIR .