Sobes.tech
Junior

Noem de markers en interfaces in Android-ontwikkeling.

sobes.tech AI

Antwoord van AI

Marker-interfaces (Marker Interfaces) in Android zijn interfaces zonder methoden, die worden gebruikt om een klasse te markeren, en informatie over het type object verschaffen aan de compiler of de runtime-omgeving.

Voorbeelden:

  • Serializable: Geeft aan dat een object geserialiseerd kan worden (opgeslagen in een byte-stroom) voor latere deserialisatie. Gebruikt voor het overdragen van gegevens tussen componenten, opslaan van toestand.
  • Parcelable: Een efficiëntere versie voor Android van Serializable. Maakt het mogelijk om objecten in Parcel te "verpakken" voor snelle overdracht. Vereist implementatie van writeToParcel en het maken van een CREATOR. Gebruikt voor gegevensoverdracht tussen Activity, Service, BroadcastReceiver.
  • Cloneable: Geeft aan dat een object gekloond kan worden met de methode Object.clone().

Interfaces in Android worden gebruikt om contracten te definiëren, polymorfisme te garanderen en callbacks te implementeren.

Voorbeelden:

  • Listeners (gebeurtenisluisteraars):
    // Voorbeeld van een kliklistener
    View.OnClickListener
    
  • Callbacks (terugroepen):
    // Voorbeeld van een callback voor resultaat van een verzoek
    retrofit2.Callback
    
  • Adapters (aanpassers):
    // Voorbeeld van een adapter voor een lijst
    androidx.recyclerview.widget.RecyclerView.Adapter
    
  • Lifecycle Observers (levenscycluswaarnemers):
    // Voorbeeld van een levenscycluswaarnemer
    androidx.lifecycle.LifecycleObserver
    
  • Runnable: Wordt gebruikt om code te definiëren die wordt uitgevoerd in een aparte thread.
    java.lang.Runnable
    
  • Comparable/Comparator: Om de sorteervolgorde van objecten te definiëren.
    java.lang.Comparable
    java.util.Comparator
    
  • ServiceConnection: Om te communiceren met een gekoppelde service.
    android.content.ServiceConnection
    
  • Binder: Basisklasse voor het implementeren van remote procedure calls (IPC).
    android.os.Binder