UI스레드

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e9c1a1c5-5f45-4ba6-bc4a-37bf109bc850/0A7B5018-3F44-415E-89C4-77EEA7BF9471.png

UI스레드에게 데이터를 넘겨주자 (대망의 통신)

데이터를 받기 위한 코드

public Post download() {
        try {
            URL url = new URL("<https://jsonplaceholder.typicode.com/posts/1>");
            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();

            BufferedReader br =
                    new BufferedReader(new InputStreamReader(conn.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String input = null;
            while ((input = br.readLine()) != null) {
                sb.append(input);
            }
            Gson gson = new Gson();
            Post post = gson.fromJson(sb.toString(), Post.class);

            return post;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
public void initLr() {
    btnDownload.setOnClickListener(V -> {
				download();
    }

해당 함수를 호출하면 오류가 난다.. (NetworkOnMainThreadException)

무거운 작업이기 때문에 다운로드가 안되는 것

UI스레드로는 무거운 이벤트를 처리할 수 없음

그래서 새로운 스레드에서 실행시킨다