Autore Topic: Android e la memoria  (Letto 3728 volte)

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Android e la memoria
« il: 31 Gennaio 2012, 11:48:39 »
Ieri ho causato un bug in una applicazione che sto ultimando, semplicemente modificando un pochino il layout grafico.

C'era un simpatico widget custom da me sviluppato, che estende il RelativeLayout e renderizza su se stesso l'output della classe MediaPlayer (basta semplicemente farsi restituire il SurfaceHolder del RelativeLayout e passarlo al componente MediaPlayer). Il Widget mi serve per poter customizzare la grafica dei controlli da XML, secondo le specifiche di ciascuna applicazione, e per implementare delle logiche custom come banner pubblicitari, stacchi video (midroll) pubblicitari, e insomma per tutte le possibili opzioni di advertising presenti sul mercato.

Vado per modificare le dimensioni di questo cosino, che era un po' troppo grande, e lo modifico da 840x630 a 800x6000.

Si, avete letto bene, invece di seicento, ho scritto seimila, un banale errore di battitura.

Android quando tenta di aprire la schermata, crasha inesorabilmente senza alcun messaggio di errore. O_o'' che diavolo è successo?
Sfoglio il logcat, e trovo un errore del WindowManager, che non riesce ad allocare abbastanza memoria per la Surface, tanta il Garbage Collecting, ci riprova, non ce la fa, e termina il processo senza sollevare alcuna eccezione lato applicazione, quindi non posso "catchare" l'evento in alcun modo!
Simpatico eh!

Una volta scovato e risolto il bug, mi sono fatto due conti e ho pensato che una surface di 800x6000 a 32bit di profondità, fanno circa 19MB. Considerando che il tablet su cui lavoro ha 1GB di Ram sembrano pochissimi, ma ogni singola applicazione ha un heap che varia tra i 24 ed i 32MB (raramente 48MB), e il bello è che questo valore è fisso per tutto il sistema (si può cambiare solamente usando delle Rom custom).
L'applicazione ha la definizione "large_heap" nel suo Manifest, ma evidentemente questo parametro viene ignorato (dovrebbe portare l'heap a 48MB).

Ancora una volta, Android rompe le scatole con la sua primitiva gestione della memoria che, nel mio caso, ha provocato un crash, ma in generale limita pesantemente la quantità di elementi grafici presenti in un'applicazione.
L'unico modo per svincolarsi da questa limitazione è programmare in codice nativo, con NDK, e allocare memoria alla vecchia maniera (si tratta di un normale processo Linux) e/o allocare queste superfici come texture sulla VRAM, ma così è un casino, perchè l'applicazione può perdere il context in qualsiasi momento e deve poi ricaricare le texture durante la chiamata ad onResume(). Inoltre l'uso di superfici GL funziona solo su Android 3.x+, che copre si e no il 3.5% del market share di Android.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re: Android e la memoria
« Risposta #1 il: 31 Gennaio 2012, 11:59:21 »
Che figata, immagino le imprecazioni che hai lanciato sul povero SDK di Android  :lol:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Android e la memoria
« Risposta #2 il: 31 Gennaio 2012, 14:10:08 »
Citazione da: "Allanon"
Che figata, immagino le imprecazioni che hai lanciato sul povero SDK di Android  :lol:

Potrei raccontarne una al giorno!  :lol:
Anzi, quasi quasi...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re: Android e la memoria
« Risposta #3 il: 31 Gennaio 2012, 19:50:21 »
Quando ci scriverai una serie di articoli su Appunti Digitali sarà sempre tardi. :?

Comunque è inconcepibile che l'applicazione vada in crash senza nemmeno uno straccio di errore. Siamo alla preistoria informatica.

La gestione della memoria mi ha fatto letteralmente cadere le braccia. RI-DI-CO-LA.

Chi ha progettato Android si dimostra ancora una volta un dilettante allo sbaraglio.

AmigaCori

  • Visitatore
Re: Android e la memoria
« Risposta #4 il: 31 Gennaio 2012, 21:56:00 »
Non e' gia' di Google?, io pensavo che fosse una sua creatura...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline lucommodore

  • Human Debugger
  • *****
  • Post: 6176
  • Karma: +48/-9
    • Mostra profilo
Re: Android e la memoria
« Risposta #5 il: 31 Gennaio 2012, 22:14:14 »
Compari io tanto tecnico non sono e android non lo uso ma a me questa mi sembra bella grossa... :?
E sapevo che android è sempre stato di google... :think:

Finiremo per comprarci tutti l'iPhone? :whistle:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Solo chi è folle sfida le sue molle!
http://www.questolibro.it/retro-garage << Scambio/Vendo RetroGame

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Android e la memoria
« Risposta #6 il: 31 Gennaio 2012, 22:19:59 »
Android è in mano a Google da prima dell'uscita di Android 1.0.
La ditta è stata acquisita quasi subito, quando ancora Android era poco più di un esperimento.

In verità è proprio la gestione di Google che mi preoccupa, la loro politica di sviluppo sembra abbracciare senza riserve lo spaghetti-code.

@lucommodore: da questo punto di vista iPhone è messo molto meglio, ma il price tag è elevato. Tecnologicamente parlando l'OS  più avanzato è Windows Phone 7, poi metterei (in ordine molto "empirico) iOS, Symbian e Android alla fine.
L'unico problema è che ci sono ancora pochissime applicazioni su WP7, ma il trend è in forte crescita. Per noi developersdevelopers l'ambiente di sviluppo ed il supporto tecnico sono molto importanti, e io che sono un pincopallino qualsiasi ho un telefono gratis e supporto tecnico gratis direttamente con degli ingegneri di Microsoft Italia via email e telefono cellulare, senza parlare di tutto il software gratis (Windows Ultimate, Visual Studio Enterprise, Office Professional, ecc...) grazie alla subscription con Microsoft BizSpark.
Come developer mi trovo molto bene a lavorare in questo ambiente, mentre se vuoi fare soldi con Apple sei TU il primo a regalare una fraccata di soldi a Cupertino. Microsoft invece tende a coccolare gli sviluppatori per poi offrire buoni prodotti agli utenti paganti. Apple non coccola nessuno, Apple fa la profumiera (te la fa annusare ma non te la da)  :lol:

Anche Google offre kit di sviluppo gratuiti e volendo anche OS gratuiti, nel senso che puoi sviluppare per Android usando solo Linux, Eclipse e tutta roba free e open source, solo che fanno schifo! Sono SDK progettati coi piedi, e scritti peggio! Alla fine ti consoli perchè il mercato è molto ampio e quindi lo sviluppatore soffre in silenzio, perchè spera di compensare le difficoltà di sviluppo con volumi di vendita decenti.

Con Symbian e Qt potevi sviluppare tutto usando software gratuito (anche in quel caso puoi usare Linux se vuoi), però almeno l'SDK è ben fatto (Nokia Qt Creator) e non ti fa impazzire con questo genere di problemi. Peccato che stia andando a morire, era una piattaforma tecnologicamente valida.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Android e la memoria
« Risposta #7 il: 31 Gennaio 2012, 22:28:13 »
Citazione da: "cdimauro"
Quando ci scriverai una serie di articoli su Appunti Digitali sarà sempre tardi. :?.

Hai ragione, potrei scrivere qualcosa in merito, magari senza andare a sviscerare il codice come ho fatto negli altri articoli, perchè non saprei quando trovare il tempo per farli ancora in quel modo.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline lucommodore

  • Human Debugger
  • *****
  • Post: 6176
  • Karma: +48/-9
    • Mostra profilo
Re: Android e la memoria
« Risposta #8 il: 31 Gennaio 2012, 22:58:52 »
Citazione da: "TheKaneB"
Android è in mano a Google da prima dell'uscita di Android 1.0.
La ditta è stata acquisita quasi subito, quando ancora Android era poco più di un esperimento.

In verità è proprio la gestione di Google che mi preoccupa, la loro politica di sviluppo sembra abbracciare senza riserve lo spaghetti-code.
Quello altrimenti finemente detto "alla membro di segugio" ? :lol:

Citazione da: "TheKaneB"
@lucommodore: da questo punto di vista iPhone è messo molto meglio, ma il price tag è elevato. Tecnologicamente parlando quello più avanzato è Windows Phone 7, l'unico problema è che ci sono ancora pochissime applicazioni, ma il trend è in forte crescita. Per noi developersdevelopers l'ambiente di sviluppo ed il supporto tecnico sono molto importanti, e io che sono un pincopallino qualsiasi ho un telefono gratis e supporto tecnico gratis direttamente con degli ingegneri di Microsoft Italia via email e telefono cellulare, senza parlare di tutto il software gratis (Windows Ultimate, Visual Studio Enterprise, Office Professional, ecc...) grazie alla subscription con Microsoft BizSpark.
Come developer mi trovo molto bene a lavorare in questo ambiente, mentre se vuoi fare soldi con Apple sei TU il primo a regalare una fraccata di soldi a Cupertino. Microsoft invece tende a coccolare gli sviluppatori per poi offrire buoni prodotti agli utenti paganti. Apple non coccola nessuno, Apple fa la profumiera (te la fa annusare ma non te la da)  :lol:

L'iPhone costa troppo.
E Apple non è capace di operare come la Microsoft. Inoltre tra le due compagnie c'è un'enorme differenza in tutte le politiche aziendali e là dove Microsoft è da sempre abituata a "pensare devoloper", la Apple ragiona su come rendere fruibili i suoi prodotti all'utenza più scrauta. Io son convinto che la differenza derivi ancora dalle differenze di pensiero degli Zii Bill e Steve...
Il risultato è che Microsoft ha sempre una marcia in più per i coders, Apple ce l'ha per mia cugina cassiera.
L'esempio concreto è il paragone tra la campagna per la distribuzione dei Lumia 800 ai developers e l'uscita dell'iBook Author nell'App-store. Alla Microsoft si assicurano l'ammmore dei developers e un sacco di nuove app, la Apple si farà amare da mamme&zie di tutto il mondo perché gli permette di pubblicare il loro romanzino autobiografico. :lol:
Però compare, per le coccole basta entrare in un Apple-Store. All'Apple-Store ti vogliono bene :mrgreen:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Solo chi è folle sfida le sue molle!
http://www.questolibro.it/retro-garage << Scambio/Vendo RetroGame

AmigaCori

  • Visitatore
Re: Android e la memoria
« Risposta #9 il: 31 Gennaio 2012, 23:19:08 »
Citazione da: "TheKaneB"
Android è in mano a Google da prima dell'uscita di Android 1.0.
La ditta è stata acquisita quasi subito, quando ancora Android era poco più di un esperimento.
Infatti io avevo letto sta cosa tempo fa, la fonte era Wikipedia pero' l'avevo data per valida :P insomma, Google non e' molto interessata alla qualita' e come ho gia' detto, si vede anche dai suoi prodotti...non e' raro trovare gente che installa altri clienti di posta elettronica perche' Gmail e' giusto utilizzabile  :doh:  giusto per fare un esempio...
Citazione
In verità è proprio la gestione di Google che mi preoccupa, la loro politica di sviluppo sembra abbracciare senza riserve lo spaghetti-code.
Dai vostri commenti come developer e dalle mie impressioni come user...pare proprio cosi'.

Io spero vivamente che Google si dia una svegliata con sto WinPhone, non perche' patteggi per uno o per l'altro, semplicemente VOGLIO concorrenza, sti BIG si muovono solo quando gli metti fuoco al...  :mrgreen:
Da user Android mi piace molto, ma non mi dispiacerebbe di certo affiancargli un WinPhone...non un Nokia (costano troppo e non rullano a prestazioni come la concorrenza  :lol:  ) ma un qualcosa di coreano non mi farebbe schifo.  :mrgreen:

@lucommodore
A me l'unica cosa che piace dell'iPhone e' che si trovano applicazioni di tutti i tipi, di solito trovo in ordine di diffusione: iOS, Android, Blackberry.
Per iphone trovi tutto, non che ci sia un qualcosa che su Android non trovo, cioe' su Linux accade che a volte uso Windows per mancanza di applicazioni o driver seri, su Android non mi capita di dover usare o voler un iphone.
Quindi non lo comprerei perche' costa schifosamente troppo, poi sti cosi dopo 3-4 anni li butti o si autodistruggono (cadute, lavatrici, furto, voglia-di-cambiare) quindi spenderci troppo non ha senso.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Android e la memoria
« Risposta #10 il: 31 Gennaio 2012, 23:21:37 »
Si certo, con una mano ti abbracciano e con l'altra ti sfilano il portafogli  :lol:
Lo fanno anche a Palermo, alla fermata del 101 davanti la stazione! Sai, anche lì ti vogliono un gran bene  :romance-grouphug:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

AmigaCori

  • Visitatore
Re: Android e la memoria
« Risposta #11 il: 31 Gennaio 2012, 23:26:19 »
Ma vuoi mettere?????, preferiresti l'omaccione brutto e cattivo con tanto di cicatrice sulla guancia e sciabolone?  :?
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline lucommodore

  • Human Debugger
  • *****
  • Post: 6176
  • Karma: +48/-9
    • Mostra profilo
Re: Android e la memoria
« Risposta #12 il: 31 Gennaio 2012, 23:40:01 »
Citazione da: "TheKaneB"
Si certo, con una mano ti abbracciano e con l'altra ti sfilano il portafogli  :lol:
Lo fanno anche a Palermo, alla fermata del 101 davanti la stazione! Sai, anche lì ti vogliono un gran bene  :romance-grouphug:
:angry-cussingblack:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Solo chi è folle sfida le sue molle!
http://www.questolibro.it/retro-garage << Scambio/Vendo RetroGame

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re: Android e la memoria
« Risposta #13 il: 01 Febbraio 2012, 02:44:02 »
Ma lasciate perdere Android, iOS e Windows Phone... lo sanno tutti che l'OS definitivo del futuro sarà NSA OS! :lol:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: