Maison  >  Questions et réponses  >  le corps du texte

java - 怎样才能在UI线程中等待okhttp返回结果才进行下一步

PHP中文网PHP中文网2765 Il y a quelques jours421

répondre à tous(6)je répondrai

  • PHPz

    PHPz2017-04-18 10:03:13

    Utiliser le gestionnaire :

    //在onCreate()方法外定义一个Handler :
    Handler myHandler = new Handler() {  
        public void handleMessage(Message msg) {   
            switch (msg.what) {   
                case UI_OPRATION:   
                    doSomething();  
                    break;   
            }   
            super.handleMessage(msg);   
        }   
    };
         
    //调用处
    ...
    String version = response.body().string();
    myHandler.sendMessage(UI_OPRATION);
    ...
    

    répondre
    0
  • 阿神

    阿神2017-04-18 10:03:13

    Recommander rxjava+retrofit

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:03:13

    //方法一
    message.obj = version;
    
    //方法二
    Bundle bundle = new Bundle();
    bundle.putCharSequence("你的KEY",version);
    message.setData(bundle);
    
    //UI里的handle里面用
    Bundle bundle = message.getData();
    String version = bundle.getCharSequence("你的KEY");
    
    //或者直接
    String version = message.getData().getCharSequence("你的KEY");
    
    //当然,注意判空哦
    

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:03:13

    Pas de code, juste une idée.
    À l'origine, en plus d'éviter les requêtes réseau asynchrones, il existe une autre raison importante, qui est de réaliser des opérations parallèles. Et l’effet souhaité est en fait l’effet d’une exécution synchrone.
    La méthode d'implémentation est donc que le gestionnaire traite les données et qu'une vue de chargement est utilisée pour isoler les opérations de l'utilisateur. Traitez-le après avoir reçu le rappel.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:03:13

    Après avoir demandé les données, installez simplement version en utilisant msg.obj=version, puis handleMessage(Message msg) récupérez la version dans OnCreate puis continuez à demander les données de manière asynchrone

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:03:13

    Les réponses ci-dessus sont toutes bonnes. Permettez-moi d'ajouter quelque chose en plus. Okhttp dans la famille square est très facile à utiliser. Il sera encore plus facile à utiliser si la mise à niveau de la famille elle-même est ajoutée. Retrofit+Rx est très efficace dans la gestion des threads et la gestion des exceptions est également très bonne. .

    répondre
    0
  • Annulerrépondre