Kotlin - Comment passer un Runnable comme ceci dans Handler

Hayk Mkrtchyan

Je suis débutant en kotlin. J'essaie de créer une tâche qui se répétera toutes les 2 secondes. J'ai donc créé quelque chose comme ça.

val handler = Handler()
    handler.postDelayed(Runnable {
        // TODO - Here is my logic

        // Repeat again after 2 seconds
        handler.postDelayed(this, 2000)
    }, 2000)

Mais dans postDelayed(this) cela donne une erreur - required Runnable!, found MainActivity. J'ai même essayé this@Runnablemais ça n'a pas fonctionné.

Mais quand j'écris la même fonction comme ça, ça marche

val handler = Handler()
    handler.postDelayed(object : Runnable {
        override fun run() {
            // TODO - Here is my logic

            // Repeat again after 2 seconds
            handler.postDelayed(this, 2000)
        }
    }, 2000)

Alors pourquoi le thismot-clé ne fonctionne pas dans la première fonction, mais dans la deuxième fonction ça marche bien ?

Léna Bru

Vous avez plusieurs options pour vous y prendre :

  1. faire en sorte que l'exécutable et le gestionnaire soient dans la même portée

       //class scope
       val handler = Handler()
       val runnable = Runnable {
    
            handler.removeCallbacksAndMessages(null) 
            //make sure you cancel the 
             previous task in case you scheduled one that has not run yet
            //do your thing
    
            handler.postDelayed(runnable,time)
    
      }
    

puis dans une fonction

handler.postDelayed(runnable,time)
  1. Vous pouvez exécuter un timertask, ce qui serait mieux dans ce cas

    val task = TimerTask {
       override fun run() {
        //do your thing
       }
    }
    
    val timer = Timer()
    
    timer.scheduleAtFixedRate(task,0L, timeBetweenTasks)
    

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Comment passer un Lambda à toSortedSet () dans Kotlin

Comment passer un ndarray numpy comme couleur dans OpenCV?

comment passer le groupe actuel comme argument dans un groupby?

Comment passer des variables dans un script shell comme arguments?

Comment passer un long comme offset dans stream.read?

Comment passer un HashMap comme entrée secondaire dans Dataflow

comment passer un lien comme paramètre dans l'url

comment passer un objet comme accessoire dans nextjs

Comment pointer une variable qui a un nom ambigu dans Kotlin? (ceci, étiqueter ou utiliser autre chose)

comment passer des valeurs dans la fonction javascript avec ceci

Passer StringBuilder::append comme argument dans Kotlin

Comment remodeler un tableau avec numpy comme ceci:

Dessinez un polygone coloré comme ceci dans R ou Matlab

Comment passer un objet personnalisé via l'intention dans Kotlin

Passer ceci dans le constructeur

Python - comment passer un dictionnaire dans defaultdict comme valeur et non comme référence

Comment passer un booléen à un paramètre de commutateur dans Azure Cli (comme dans powershell) ?

Comment analyser datetime comme ceci

Comment passer un tableau comme résultat d'un composant fonctionnel à un autre dans React

Comment passer un slot comme argument

Comment passer un contexte comme paramètre

Comment passer un objet comme accessoire à un composant fonctionnel enfant dans React.js?

Comment passer un fichier comme argument au paramètre en Python dans un format spécifique?

Comment passer un composant comme accessoire à un autre composant dans Vue.js

Comment passer un mixin comme paramètre d'un autre mixin dans SASS

Comment passer un argument de fonction comme clé dans un dictionnaire en Python

Comment passer la sortie d'un graphique comme entrée à un autre graphique dans tensorflow

Passer "* ()" comme argument à un programme dans bash

Passer un tableau comme argument dans golang

TOP liste

  1. 1

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  2. 2

    Enregistrer le chemin de l'image de la galerie vers la base de données de la salle et l'afficher dans la liste des recycleurs

  3. 3

    Microsoft.WebApplication.targets

  4. 4

    knn classification 10 plis de l'outil et du tri

  5. 5

    Quelle est la relation entre le modèle et le tableau ? C'est compliqué

  6. 6

    Créer un système Buzzer à l'aide de python

  7. 7

    Fonction de puissance en Java

  8. 8

    opérations en virgule flottante dans go

  9. 9

    Comment définir la couleur de l'intersection dans un diagramme de Venn?

  10. 10

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  11. 11

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  12. 12

    AutoMapper.Collection.EFCore - Erreur générée lors de la configuration

  13. 13

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  14. 14

    Comment remplir les valeurs manquantes avec plusieurs colonnes dans R

  15. 15

    Comment puis-je ajouter un UIView sous mon contrôleur de barre d'onglets par programme?

  16. 16

    Yat-il un référentiel maven application Java à démarrer rapidement 11

  17. 17

    Comment rechercher des éléments dans une ArrayList? - Java

  18. 18

    Comment utiliser HttpClient avec TOUT cert ssl, quelle que soit la « mauvaise » est

  19. 19

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  20. 20

    Sélectionnez le bouton radio sur la saisie de texte

  21. 21

    Placez le modeBar en haut au centre à l'aide de plotly.js

chaudétiquette

Archive