不好玩的线程

package com.example.kaixuan.anull;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {

    public static final int TRANSMIT_DATA = 1;
    public static String string0;
    public String temp;//定义全局变量,想要把string0的值传给它。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loadData();
        System.out.println("Main output:ID="+Thread.currentThread().getId());
        anotherThread();
    }

    public void anotherThread(){
        new Thread(){
            public void run() {
                System.out.println("anotherThread :ID="+Thread.currentThread().getId());
                System.out.println("anotherThread output: Content="+temp);
            }
        }.start();  //开启一个线程
    }

    private Handler dataHandler =new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case TRANSMIT_DATA:
                    System.out.println("handleMessage output:ID="+Thread.currentThread().getId());
                    System.out.println("handleMessage output: Content="+msg.obj);

                    temp=msg.obj.toString();

                    break;
                default:
                    break;
            }
        }
    };


    public  void loadData() {


        OkHttpClient okHttpClient = new OkHttpClient();
        //构造Request,
        //builder.get()代表的是get请求,url方法里面放的参数是一个网络地址
        Request.Builder builder = new Request.Builder();

        final Map params = new LinkedHashMap();// 请求参数

        Request request = builder.get()
                .url("https://api.avatardata.cn/Jztk/Query?key=15f9ceafeeb94a2492fd84b8c68a554c&subject=4&model=c1&testType=rand")
                .build();
        //3将Request封装成call
        Call call = okHttpClient.newCall(request);

        //4,执行call,这个方法是异步请求数据
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                //失败调用
                Log.e("MainActivity", "onFailure: " );
            }

            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                //成功调用
                Log.e("MainActivity", "onResponse: " );

                //获取网络访问返回的字符串
                string0 = response.body().string();

                System.out.println("Asynchronous Request Output:ID="+Thread.currentThread().getId());

                Message message = new Message();
                message.obj = string0;
                message.what =TRANSMIT_DATA;

                dataHandler.sendMessage(message);

            }
        });

    }

}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/STU17xkx/article/details/83214866