Einige Anfängerfragen

  • Guten Abend,


    ich bin neu hier im Forum und habe gleich ein paar Fragen.


    1) Es stehen einen ja verschiedene Wege zur Verfügung um Listener hinzufügen. Ich habe im Internet ein Beispiel gesehen da wurde ein Listener in einer Service Klasse hinzugefügt. Ein Service ist ja an einen Prozess gebunden, oder etwas, dass im Hintergrund unabhängig läuft. Aber wo ist der Unterschied zwischen ...

    Code
    class myClass extends Service implements View.OnClickListener{}


    und wenn ich einfach sage :


    Code
    button.setOnTouchListener(new View.OnTouchListener(){}

    2) Wenn wir schon bei dem Thema Listener sind. In meinem Code habe ich auf meinem Button einen setOnTouchListener(new View.OnTouchListener(). Jetzt merke ich, dass es eigentlich besser wäre, wenn ich auf die Gesture Methoden zurückgreifen könnte. Also Double Tap, longPressing ect. Muss ich da den Listener auf dem Button austauschen, oder kann man die auch irgendwie so hinzufügen?


    3) Was genau macht:

    Code
    @Nullable
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }


    Das waren erstmal alle Fragen. Ich danke allen die Antworten.

  • Hallo,


    1) Im Grund wird hier nur eine Service-Klasse erstellt, die alle Methoden eines Clicklisteners implementieren muss. (Siehe Java Vererbung/Interfaces).
    In welchen Zusammenhang das überhaupt Sinn ergibt, kann ich dir nicht sagen. Für mich macht es so jedenfalls keinen Sinn (vorallen, da man ja nur einen Clicklistener pro Klasse so definieren kann, hat man mehrere Buttons passt das so schon nicht mehr richtig.)


    1.1) So ist der Listener definitiv direkt dem Button zugewiesen, und macht so meine Meinung in den meisten Fällen auc am meisten Sinn.


    2) Es sollte eigentlich für die meisten Listener auch eine setOnXYListener Methode geben und dann kannst du alle definieren die du willst.


    3) Der Code gibt keinen Binder zurück, obwohl es ein Bound-Service ist. (siehe: https://proandroiddev.com/deep…roid-services-4830b8c9a09 Abschnitt: Service Binder)

  • Hallo ich würde das etwas anders furmuliren.


    Ein Service ist erstmal ein Prozess der meistens im hinderund läuft, und keine Bildschirm Ein und Ausgaben macht. Der läuft in einem Thread der nicht auf den Main oder UI Thread zugreift. Hat auch kein Layout. Ist in etwas mit einem Dienst vergleichbar.


    Deshalb macht es für mich keinen Sinn einen Button in einen Service zu erstellen und ein onClicklister im Service ist auch sinnlos.
    Lister in Service gibt es schon nur meistens für andere Aufgaben nicht für Click Event.
    Zb um Ergebnisse aus der DB abzufragen.


    Das mit den Binder ist falsch was gesagt wurde.
    Das ist ein ungebunder freier Service.
    Er ist nicht an irgentetwas gebunden kann zb auch weiter laufen wenn die activity die ihn gestartet hat beendet wird. Bei einem gebunden Service der zb an eine activity gebunden ist würde der Service beendet wenn die activity zerstört wird.


    Mit Null in der onbind Methode als Rückgabe Wert ist ein Unbound Service.



    Zu den Themen klick listner mit interface oder direckt. Ist geschmackssache Sache.
    Was auch nicht so stimmt ist. Das es bei der interface Variante nur einen Button geben kann.
    Alle Events von den Button kommen in der einen Klicklistner Methode vom Interface an dort musst du dann eine Fall unterscheidung machen.
    Zb mit swich case.
    Ich bevorzuge dies Variante da es für mich übersichtlicher ausschaut bei vielen button.
    Aber das ist jedem seine Sache.


    Nur die Varianten mit onclick im XML Layout würde ich nicht machen. Das ist dann mit Fragmenten auch wider nicht mehr möglich. Also ambesten gar nicht erst angewöhnen auch wenn das noch in vielen Codes im Netz noch so ist.


    Thema Service
    https://www.big-app.de/alles-zu-services-unter-android/

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!