2015-04-01 12 views
5

Ho un grande gioco per Android in cui esiste un'attività per ogni schermata logica. (Schermata iniziale, schermata iniziale, selettore di livello, schermata di gioco e Impostazioni sono attività distinte). Tutto sta funzionando bene adesso.Devo sostituire Attività Android con Frammenti?

Se riscrivo tutto in modo che ci sia una sola attività e le schermate logiche sono Frammenti, Ridurrà la RAM o il consumo della CPU?

+1

Questo può aiutarti: http: // stackoverflow.it/questions/20306091/dilemma-when-to-use-fragments-vs-attività – Keshav1234

+0

potrebbe non ridurre la RAM o il consumo della CPU molto ma sicuramente ridurrà la vostra tranquillità. Ricreare quindi con i frammenti solo se si desidera creare codice riutilizzabile e utilizzare il design modulare. –

risposta

3

Dopo anni (due +) di dire "I frammenti sono la strada da percorrere", non sostituirei mai più le attività con Frammenti.

L'utilizzo di frammenti per riutilizzare determinati componenti va bene. Anche l'utilizzo dei frammenti per i dialoghi è soddisfacente, ma ora mi sono reso conto di quanto sia orribile l'implementazione di Fragment, quanto sia terribile il ciclo di vita di Fragment e quanto FragmentManager sia imprevedibile (e difettoso) in determinate circostanze. Vai avanti e passa un po 'di tempo a cercare su Google e troverai tutti i casi "edge but not so edge" in cui gli hack devono essere implementati per aggirare un comportamento buggy "by design".

A volte è necessario estendere o copiare il codice sorgente di queste classi dal codice sorgente di Android per modificare un campo privato o protetti ...

Non fraintendetemi, Frammenti lavorare. Ma non sono la soluzione a tutti i tuoi problemi (sono forse la fonte di nuovi a medio-lungo termine). Se hai già attività, divertiti! In effetti, i nuovi quadri di transizione con elementi condivisi sono una chiara indicazione che Google vuole che tu usi più attività;)

Questa è la mia opinione personale dopo aver lavorato in circa sei progetti Android di dimensioni medio-grandi (alcuni sono popolari e tu probabilmente li hai usati!);)

0

No, probabilmente lo aumenterà (come avrete più classi) ma solo marginalmente.

Il vantaggio dell'utilizzo di frammenti consiste nell'avere "blocchi" riutilizzabili che è possibile spostare in base alle proprie esigenze. Ad esempio, per un'attività specifica potresti avere un layout in cui hai la finestra principale sullo schermo e facendo clic su un elemento si crea una nuova attività con alcuni dettagli. Con i frammenti, è possibile creare un layout per i tablet in cui la finestra principale occupa solo metà dello schermo e il resto viene utilizzato per il frammento di dettagli, senza dover riscrivere tutto.

2

Per quanto ne so, no, i frammenti hanno (quasi) nessun impatto su RAM o CPU.

Un'attività contiene determinati elementi ed esegue alcune funzionalità. Un frammento viene caricato su una sorta di attività di base, come un'attività con nient'altro che una barra di azione. Il resto è riempito dal frammento.

controllare anche:

android - need some clarifications of fragments vs activities and views

Activity or Fragment which is better way to use for performance and reliable?

+0

questo non è completamente corretto. Puoi avere più di un frammento in un'attività e non deve occupare tutto lo spazio disponibile –

0

Il vantaggio principale di frammenti per me è facile condivisione dei dati. Tra due attività, i dati devono essere trasmessi in tipi relativamente primitivi ... string, int, arrayList, ecc. Tuttavia, tra frammento e attività, i dati possono passare avanti e indietro nelle classi complesse.

Problemi correlati