¿Las clases no deberían estar todas contenidas en sus propios archivos?
No necesariamente como Android Activity
es una clase de "caso especial". Si no lo ha hecho ya, te recomiendo que leas Application Fundamentals y en particular la sección 'Actividades' bajo Application components ...
Una actividad representa una única pantalla con una interfaz de usuario. Por ejemplo, una aplicación de correo electrónico puede tener una actividad que muestre una lista de correos electrónicos nuevos, otra actividad para redactar un correo electrónico y otra actividad para leer correos electrónicos. Aunque las actividades trabajan juntas para formar una experiencia de usuario coherente en la aplicación de correo electrónico, cada una es independiente de las demás. Como tal, una aplicación diferente puede iniciar cualquiera de estas actividades (si la aplicación de correo electrónico lo permite). Por ejemplo, una aplicación de cámara puede iniciar la actividad en la aplicación de correo electrónico que compone el correo nuevo, para que el usuario pueda compartir una imagen.
Tenga en cuenta la sección de texto que he resaltado en negrita. El punto es que un Activity
en sí mismo no es la aplicación completa y, si se permite, cualquier aplicación de terceros puede invocar un Activity
en una de sus aplicaciones. Como tal, es común hacer un Activity
tan autónomo como sea posible. Un ejemplo particular es el uso de algo así como un AsyncTask que proporciona métodos para ejecutar un hilo de fondo, así como manipular la IU - anidar una clase privada que se extiende AsyncTask
es bastante común y simplifica el código. Las clases de anidación que extienden BroadcastReceiver también son comunes por la misma razón.
Dicho esto, no hay nada de malo en utilizar archivos de clase Java separados para las clases de ayuda de POJO, por ejemplo, se reduce a la complejidad de su aplicación, pero puede significar tener especial consideración de cómo funcionan ciertas clases de Android: AsyncTask
class siendo uno en particular si está definido en un archivo de clase separado, pruébalo y verás a qué me refiero. :-)
¿Puede publicar algunos ejemplos para ilustrar mejor su pregunta? – elevine
OOP no siempre es la mejor práctica; y dividir en miles de archivos no siempre produce un buen programa OOP. –