NetworkThread안에서 데이터를 읽어오는 부분을 다시 체크해 보셔야 할 것 같아요.
먼저, catch 블록 안에 에러가 발생할 가능성이 많아 보여요. 에러가 나는지 확인해 보세요.
특히, JSON을 파씽하는 부분은 의심스러워 보여요. data 가 null이거나 빈문자열일 가능성도 있어 보이구요.
만약에 data가 빈문자열이면 (if (data.isEmpty()))면 JSONObject을 생성할 때 에러가 날 것 같거든요. data가 잘못된 JSON 포맷이어도 에러가 날 거구요. 아래처럼 data가 널이거 빈문자열인지 체크해서, 그럴 경우는 Toast로 보여주는게 맞을 것 같습니다.
private void showEmptyDataMessage() {
Toast.makeText(MainActivity.this, "존재하지 않는 이름입니다", Toast.LENGTH_LONG).show()
}
if (data == null || data.isEmpty()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
showEmptyDataMessage();
}
});
return;
}
JSONObject obj = new JSONObject(data);
String accessId = obj.getString("accessId");
String nickname = obj.getString("nickname");
int level = obj.getInt("level");
runOnUiThread(new Runnable() {
@Override
public void run() {
text1.append("accessId : " + accessId + "\n");
text1.append("nickname : " + nickname + "\n");
text1.append("level : " + level + "\n\n");
}
});
그리고 JSONObject를 사용할 때는 get* 메소드 대신에
String accessId = obj.getString("accessId");
String nickname = obj.getString("nickname");
int level = obj.getInt("level");
opt*메소드를 사용하는 것이 Exception을 던지지 않기 때문에 안전합니다.
String accessId = obj.optString("accessId", "");
String nickname = obj.optString("nickname", "");
int level = obj.optInt("level", 0);
브레이크 포인트를 설정하셔서 천천히 디버깅을 해보세요.
추가로 쓰레드를 심도있게 공부할 목적이 아니시면 Retrofit같은 표준에 가까운 라이브러리를 쓰는 것이 좋습니다.