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

Async Task로 mysql에서 DB를 가져오는데 화면에 늦게 뜨거나 안뜹니다.

0 추천

이건 뭐 어쩔수 없는건가요..? PHP를 이용하여

JsonArray로 받아서 커스텀리스트뷰에 뿌려줍니다.

늦게라도 뜨는건 연결은 된다는건데 가끔 아예안뜨는건 왜그런건지요...

 

 

public void getData(String url){
    class GetDataJSON extends AsyncTask<String,Void,String> {

        @Override
        protected String doInBackground(String... params){
            String uri=params[0];
            BufferedReader bufferedReader=null;

            try{
                URL url=new URL(uri);
                HttpURLConnection con=(HttpURLConnection)url.openConnection();
                StringBuilder sb=new StringBuilder();
                bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

                String json;
                while ((json=bufferedReader.readLine())!=null){
                    sb.append(json+'\n');
                }
                return sb.toString().trim();

            }catch (Exception e){
                return null;
            }
        }
        @Override
        protected void onPostExecute(String result){
            myJSON=result;
            showList();
        }
    }
    GetDataJSON g=new GetDataJSON();
    g.execute(url);

}

 

 

Pinksky (160 포인트) 님이 2018년 9월 7일 질문

2개의 답변

0 추천
늦게 뜨는데 간혹 안뜬다는건 타임아웃 같은데요?

로그부터 보시기를........
개발자초심 (21,220 포인트) 님이 2018년 9월 7일 답변
0 추천
readline으로 하면 안됩니다.

readline이라는 것은 데이터가 모두 끝에 라인피드가 있다고 가정하는 건데요.

http 프로토콜을 보면 header 만 있는 경우가 아니면, 맨 끝에 라인피드가 없습니다.

따라서, readline 에서 멍청하게 되겠죠.

okhttp3를 사용하는 것을 추천합니다.

아니면 http header를 파싱해서 content-length 만큼 버퍼를 만들어서 제대로 처리해야 합니다.
Will Kim (43,170 포인트) 님이 2018년 9월 10일 답변
디비를 가져와서 UI를 바꿔야되서(커스텀리스트뷰) Asynctask를 사용하였는데요,
그래도okhttp를 사용해야하나요 ? 핸들러도 쓰고?
...