Qual è il modo migliore per strutturare un'applicazione Android?


26

Sto avviando una nuova applicazione Android. Qual è la migliore struttura da usare?

Ho intenzione di renderlo un design multi-pacchetto come segue:

  1. Pacchetto principale, compresa l'attività
  2. Livello di servizio e dati
  3. Pacchetto di entità, inclusa la classe di entità.

    Qualche consiglio?


Risposte:


11

Innanzitutto, dipende dall'applicazione che stai facendo.

dovresti fare una descrizione testuale o schematica su come un utente lavorerà con l'applicazione. Risolvi tutti gli scenari possibili. Metti degli esempi che verranno usati in seguito per i test.

Decidi cosa appartiene alla funzionalità e cosa - alla configurazione modificabile. Estrai funzionalità ed entità dati dagli scenari.

Dagli scenari, decidi quale sarà la tua app. Servizio, attività, widget, persino un fornitore di contenuti o un sistema complesso, inclusi alcuni componenti diversi. Metti alla prova la tua decisione rispetto agli scenari.

Nel caso del sistema complesso, distribuire funzionalità ed entità dati tra i componenti dell'applicazione. Fai un elenco dei componenti e di cosa sono (attività o altro).

Crea l'elenco dei componenti dell'interfaccia utente con la descrizione di ciò che fanno (non ancora COME). In seguito, saranno widget e attività o frammenti o layout.

Crea bozze di layout per i componenti dell'interfaccia utente. Fai passaggi semplici l'uno dall'altro. Guarda l'interfaccia utente. Torna agli scenari e riproducili tutti con la tua bozza dell'interfaccia utente. Tutti i componenti e le classi dell'interfaccia utente inseriti in una gerarchia di pacchetti o pacchetto.

Crea un elenco di entità dati. Decidi cosa sarà in cosa. Pianificarli come raccolte o tabelle in DB o DB diversi. Rendili come classi, inseriscili in un'altra gerarchia di pacchetti o in un altro pacchetto. Qui metti anche gli helper DB - classi che parlano con DB di SQL.

Crea una classe di test (JUNIT o meglio TestNG) per riempire l'interfaccia utente e le entità di dati con i dati di test e avviarli.

Gli adattatori non devono essere pubblici, poiché vengono utilizzati solo nel GroupView principale. Quindi, di solito non ci sono file per adattatori.

Do Non mettere tutte le variabili globali in classi statiche speciali - si tratta di una cattiva pratica. Stai mescolando così il codice e la configurazione. Usa questa soluzione molto interessante . Per ora, è il migliore che conosco per Android.

I dati di configurazione dovrebbero essere messi in risorse. Se alcuni di essi sono complessi, utilizzare origini XML e parser (s). Trasforma i lettori dei dati delle risorse in variabili globali. Non tutti saranno statici! Potrebbero appartenere all'istanza principale dell'attività, ad esempio.

Non usare costanti non configurabili nel codice! Può essere, solo il tuo nome :-). Ogni costante diventa non costante a volte.

D'altra parte, se alcuni di voi il codice non è java normale, ma gli script - un mix di dati e linguaggio, allora potete e dovete mescolare dati e codice.

Fallo sempre: scrivi qualcosa - collega qualcosa a una massa - aggiungi test per questa nuova cosa - prova questa nuova - prova la massa - ripeti. Solo piccoli passi!

Modificare. È inoltre possibile utilizzare lo sviluppo guidato dai test: scrivere i test prima del codice appropriato. In questo modo, eseguendo i test prima che il codice sia pronto, hai un doppio test, quindi controlli se i test reagiscono davvero a un codice errato.


7

Sì, è facile da sviluppare se categorie cose sulla base del loro lavoro. Sei nella giusta direzione. In Android, se sviluppo un'applicazione, userò la seguente struttura, qualcosa di simile a te

  1. Pacchetto principale con tutte le attività sullo schermo
  2. Classi adattatore se sto usando ListView, GridView che richiedono BaseAdapter ecc
  3. Assistente di analisi se utilizzato
  4. Banca dati
  5. Classi entità e Classi per memorizzare variabili statiche
  6. Servizio e ricevitore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.