Aplicación de Android sin classs?

He visto una charla de JS sobre Redux recientemente. El hablante programó una aplicación en funcionamiento sin ninguna class, solo con variables const. Incluso excluyó las classs en su file de pelusa ( https://github.com/MartinSeeler/networkingux-presentation/tree/master/demo ).

Así que traté de hacer lo mismo en mis aplicaciones de Android, que están escritas en Kotlin. Desafortunadamente, recibo el siguiente error cuando bash hacer de mi class MainActivity un object:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{blog.app.niklas.flyingbytes/blog.app.niklas.flyingbytes.MainActivity}: java.lang.IllegalAccessException: void blog.app.niklas.flyingbytes.MainActivity.<init>() is not accessible from java.lang.Class<android.app.Instrumentation> Caused by: java.lang.IllegalAccessException: void blog.app.niklas.flyingbytes.MainActivity.<init>() is not accessible from java.lang.Class<android.app.Instrumentation> 

¿Hay alguna manera de evitar esto? Me gusta mucho la idea de tener tantos objects únicos como sea posible en mi aplicación.

Gracias de antemano,

Niklas

Como dijo Geoffrey, la plataforma Android administra sus actividades, pero eso también significa que la plataforma es responsable de realizar un seguimiento de las instancias de su actividad, que es el propósito de Singleton.

Por lo tanto, si bien no puedes convertir tu Actividad en un object, puedes convertirlo en Singleton utilizando el atributo android:launchMode en tu AndroidManifest :

  <activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleInstance"> 

Para get más información sobre el atributo launchMode (incluidos otros valores posibles), consulte la documentation oficial.

No puede replace la class de actividad por object kotlin en Android, por la misma razón que no instancia las actividades llamando a su constructor: la plataforma administra las actividades.

Cuando solicite (a través de un Intento) la plataforma para una Actividad, la plataforma intentará instanciarla llamando a su constructor con cero parámetro. Lo cual no existe para un object, dando el error mencionado.

Dicho esto, algunos desarrolladores esquivan el marco dado por Android, como el mortero , teniendo solo una actividad y utilizando una lógica personalizada para navegar entre vistas.

  • Segundo ctor vacío en Kotlin
  • Configuración de Kotlin vía gradle en eclipse
  • Cómo animar ConstraintLayout de abajo hacia arriba de la pantalla?
  • FragmentManager lanza IllegalArgumentException en Kotlin
  • Concatenación de secuencia Kotlin
  • Cómo express `Class <? extiende Any> `
  • ¿Una propiedad que cambia a de var a val una vez que se asigna un valor nulo?
  • Establecer el valor de un campo sin llamar al método set - Kotlin
  • ActivityTestRule.getActivity devuelve nulo en el método Before
  • Dagger2 + Kotlin, inyección no funciona
  • kotlin android start nuevo service