java - 怎样才能在UI线程中等待okhttp返回结果才进行下一步
PHP中文网
PHP中文网 2017-04-18 10:01:13
0
6
423
PHP中文网
PHP中文网

认证0级讲师

répondre à tous(6)
PHPzhong

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);
...
阿神

Recommander rxjava+retrofit

Ty80
//方法一
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");

//当然,注意判空哦
PHPzhong

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.

Ty80

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

Peter_Zhu

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. .

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal