마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask get 질문이요

+1 추천
안녕하세요. 안드로이드 개발 왕초보입니다.

AsyncTask를 이용해서 url를 통해 db에 있는 데이터를 sql문으로 처리하고 있는데 AsyncTask 결과 값을 자바 코드 안에 변수로 저장할 때 저장이 안되어 사용할 수가 없어요...

근데 값을 textview에 출력해보면 출력은 잘 됩니다.. 하지만 사용이 안됩니다..ㅠ

해결방법을 찾아보다가 get을 이용한다는 것을 알았습니다. 하지만 get 부분에 오류가 뜹니다..

해결방안 좀 알려주세요. 지금 몇 주째 해결이 안되고 있습니다. 제발 도와주세요ㅠㅠ
개발왕초보 님이 2019년 5월 27일 질문
저도 이걸로 몇일째 고생중입니다ㅜㅜ고생하세요~
코드랑 로그캣 메시지를 올려주세요.
로그캣 어디 부분을 올리면 되나요..?

AsyncTask 코드 부분은 이거입니다.
private class phpdo extends AsyncTask<String,Void,String> {

        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... arg) {
            try {
                String key = arg[0];
                String target = "http://172.30.5.35/trok.php?ID=" + key;
                URL url = new URL(target);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String temp;
                StringBuilder stringBuilder = new StringBuilder();

                while ((temp = bufferedReader.readLine()) != null) {
                    stringBuilder.append(temp + "\n");//stringBuilder에 넣어줌
                }

                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return stringBuilder.toString().trim();//trim은 앞뒤의 공백을 제거함

            } catch (Exception e) {
                //e.printStackTrace();
                return new String("Exception: " + e.getMessage());
            }
        }
현재 코드만 봐선 문제없는듯한데요.  doInBackground 수행의 반환값인 stringBuilder.toString().trim()을 postExecute 오버라이딩 해서 파라미터값으로 받아올수 있고, 액티비티에서 AsyncTask클래스 생성해서 get()메소드로 받아오시면 될텐데요. 참고로 get()메소드는 서버 오류등으로 응답이 없을경우 앱의 UI가 블록되어서 아무 작업을 할 수가없어서 콜백인터페이스를 따로 만드셔서 쓰는게 좋아요.
저희가 그 방식으로  메소드 값을 받아서 변수에 저장하려는데 저장이 안되고 데이터가 날아가버리네요 ㅜㅜ
get 사용하려고 해도 Unhandled exceptions: java.util.concurrent.ExecutionException, java.lang.InterruptedException 이런 오류가 생겨요
자세한 답변 부탁드립니다ㅠ

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...