Le classi non dovrebbero essere tutte contenute nei propri file?
Non necessariamente come Android Activity
è una classe 'caso speciale'. Se non si è già fatto, vi consiglio di leggere Application Fundamentals ed in particolare la sezione 'Attività' sotto Application components ...
Un'attività rappresenta un unico schermo con un'interfaccia utente. Ad esempio, un'applicazione di posta elettronica potrebbe avere un'attività che mostra un elenco di nuove e-mail, un'altra attività per comporre un'email e un'altra attività per leggere le e-mail. Sebbene le attività lavorino insieme per formare un'esperienza utente coesa nell'applicazione di posta elettronica, ognuna è indipendente dalle altre. In quanto tale, un'applicazione diversa può avviare una qualsiasi di queste attività (se l'applicazione di posta elettronica lo consente). Ad esempio, un'applicazione fotocamera può avviare l'attività nell'applicazione di posta elettronica che compone la nuova posta, in modo che l'utente possa condividere un'immagine.
Nota la sezione di testo che ho evidenziato in grassetto. Il punto è che uno Activity
di per sé non è l'app completa e, se consentito, qualsiasi app di terze parti può potenzialmente invocare un Activity
in una delle tue app. Pertanto, è comune rendere un Activity
il più autonomo possibile. Un esempio particolare è l'uso di qualcosa come un AsyncTask che fornisce metodi per eseguire un thread in background e manipolare l'interfaccia utente - l'nidificazione di una classe privata che estende AsyncTask
è abbastanza comune e semplifica il codice. Le classi di nidificazione che si estendono BroadcastReceiver sono comuni anche per lo stesso motivo.
Detto questo, non c'è niente di sbagliato nell'usare file di classi Java separati per le classi di helper POJO, ad esempio, si tratta solo della complessità della tua app, ma può significare prendere in considerazione in modo particolare il funzionamento di certe classi di Android. AsyncTask
class essendo uno in particolare se definito in un file di classe separato, provalo e vedrai cosa intendo. :-)
Puoi pubblicare alcuni esempi per illustrare meglio la tua domanda? – elevine
OOP non è sempre la migliore pratica; e la suddivisione in migliaia di file non produce sempre un buon programma OOP. –