SDK: niente Multitasking?

di Emanuele L. Cavassa 4

Il multitasking su iPhone
Dopo la probabile impossibilità da parte di Sun di portare Java sull’iPhone (per fortuna, considerando che le applicazioni Java sono più pesanti e meno eleganti delle applicazioni native per un sistema, avendo la Virtual Machine come strato intermedio), ora pare che le applicazioni di terze parti sull’iPhone non possano essere eseguite in background.


Questo vorrebbe dire che nel caso in cui voi stiate ad esempio giocando con l’iPhone e riceveste una chiamata, la partita verrebbe interrotta ed il programma chiuso.


Ma come? Visitando il sito Apple sulle specifiche di iPhone, una delle caratteristiche evidenziate del cellulare è proprio la capacità di effettuare il multitasking, ovvero la capacità di gestire più programmi contemporaneamente, come si può vedere in questo filmato dimostrativo.


Allora perchè le applicazioni di terze parti non dovrebbero beneficiare della capacità di calcolo e della potenza di OSX?


Le linee guida che Apple dà agli sviluppatori per l’interfaccia utente delle applicazioni su iPhone specificano come


una sola applicazione per volta può essere eseguita su iPhone e le applicazioni di terze parti non devono essere eseguite in background. Questo significa che quando gli utenti passano ad un’altra applicazione, rispondono al telefono o controllano le email l’applicazione che stanno usando si chiude. E’ importante fare in modo che gli utenti non abbiano nessun effetto negativo da questa metodologia. In altre parole, gli utenti non devono avere la sensazione che lasciare la vostra applicazione su iPhone e ritornarci più tardi sia più difficile che passare tra un’applicazione e l’altra sul computer


Tornando al nostro esempio del gioco, se ci pensate non ha senso che rimanga aperto in background mentre voi state rispondendo ad una telefonata: sarebbe soltanto uno spreco delle capacità di calcolo del processore del cellulare e di conseguenza della batteria.
E’ più sensato che le applicazioni salvino il loro stato in uscita, per recuperare le informazioni nel momento in cui vengono riaperte nel punto esatto in cui si trovavano quando ne abbiamo interrotto l’uso.


C’è però il problema di tutti i programmi come gli instant messenger, il cui scopo è proprio quello di rimanere in background e notificare l’arrivo di messaggi all’utente.


La limitazione sul multitasking sembra però essere una linea guida in fatto di design dell’applicazione e non effettivamente una limitazione fisica nel funzionamento del telefono.
Infatti un programmatore al lavoro sull’SDK tramite il simulatore che Apple distribuisce ha verificato come sia fattibile un semplice instant messenger che si metta in background mentre con il telefono vengono svolti altri task, andando a disattivare il metodo applicationSuspend (che come il nome fa capire manderebbe in “sospensione” l’applicazione come abbiamo visto poco fa).


Un altro modo potrebbe essere la possibilità da parte delle applicazioni di lanciare dei deamons, i programmi che vengono eseguiti in background senza il controllo diretto dell’utente.


Attualmente entrambe le metodologie però si scontrerebbero con la licenza del SDK ed il fatto che i programmi per essere pubblicabili sul nascituro App Store devono essere in linea con le indicazioni per l’interfaccia utente rilasciate da Apple.


Vedremo come andrà avanti la cosa, anche per quanto riguarda il caso Java.



[Via]

Commenti (4)

  1. perchè per fortuna che java non è stato portato? perchè è pesante?

    anche flash è pesante.. allora cosa facciamo, non lo mettiamo sull’iphone?

  2. @il gufo: sì, flash non è supportato sull’iPhone… e non sarà portato da Apple, giustamente, ma da Adobe…

    e per java… non è perchè sia pesante di per sè, ma perchè siamo nel 2008, i giochini in java sul cellulare sono terribilmente demodè e soprattutto…

    hai visto la qualità delle applicazioni native per l’iphone? altro che java!

Lascia un commento

Il tuo indirizzo email non verrà pubblicato.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>