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

30개의 데이터를 반복해서 3번씩 통신으로 보내야 되는데요.어떻게 보내는게 나은지요?

0 추천

한번 특정화면에 갈때마다 1월(30일의 데이터),2월(30일의 데이터),3월(30일의 데이터) 

를 post로 보내야 되는데요.

for문안에 (int i=0;i<3;i++){

arraylist(30일의 데이터)

new AsynSendData(context).exectue();

}

이렇게 무식하게 짜고 보내니, i-0만타고 바로 빠져나가길래

for문 닫는 괄호 전에 Thread.Sleep(2000);을 주니까

제대로 30개씩 90개가 제대로 전송이 되는데,, 암만 봐도 무식한 방법같네요 ㅠㅠ

어떻게 보내는게 정상적인 개발자의 짜는 방법일까요?

30일씩 끊어서 반복해서 보내는 작업이 너무 힘드네요 ㅠㅠㅠ

엔조이AD (2,610 포인트) 님이 2018년 1월 21일 질문
90번 네트워크 전송하는 것보다 90개데이터를 한개로 묶어서 보내는게 낫지 않을까요?

예를들면 json 방식으로 {"1/1" : "1월1일 data" , "1/2" : "1월2일 data"} 이런식로요.
1. data 량이 얼마나 되는지 모르겠으나 30일치가 적다면 한번에 받으세요 http connection 비용이 생각보다 큽니다. 물론 keep-alive 도 있긴 하겠지만요

2. async 에 대한 개념을 다시 정립하시기 바랍니다. async task에서 작업 완료 후 callback event 를 전달 받거나 onPostExecute 에서 처리하는 방법을 찾으세요
3. asynctask 의 객체는 thread  join 과 유사하게 동작하는 get() 이 있습니다.
답변이 늦어 죄송합니다. ㅜㅜ
서버 프로토콜이 30개만 받게 되있어서요 ㅠㅜ
30개를 보낸후 PostExcute에 나머지 데이터를 30개씩 끊어서 보내야 될것 같습니다.
답변 감사합니다 ^^
aucd29님 답변감사합니다.
onPostExcute가 정답일것 같네요!!! 감사합니다 ^^
그리고 asynctask안에 join과 유사하게 동작하는 get()이 있다는건 처음알았네요
좋은팁입니다. 감사합니다 ^^
thread 안에서 thread 를 호출할때 혹은 asynctask를 호출할때 get 을 이용하면 로직을 간단하게 만들어줘서 유용 합니다.

답변 달기

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