블로그 이미지
App 개발에 대한 내용을 다룰 예정입니다. AppleSherbet

카테고리

분류 전체보기 (39)
한국프로야구 어플 (18)
세미나 (2)
Java Development (13)
Android App소개 (3)
기타 (2)
당근마켓 (1)
Total297,964
Today0
Yesterday14
안드로이드 개발을 하다보니 네트워크를 이용하여 데이터를 받아오는 코드가 많아졌다.
Wifi가 연결되어 있을땐 속도가 빨라서 괜찮은데 3G망...
특히 지하철 같은곳에서 테스트를 해보니 상당히 느려서 유저는 어플이 죽은거라고
생각 할 수도 있다.

그래서 ProgressBar를 구현하게 되었다.

ProgressBar구현은 간단하다..
추가적인 쓰레드를 만들어서 ProgressBar를 돌리는 동시에 네트워크로 부터 데이터를 받아오면 된다.
데이터를 모두 받아오면 ProgressBar를 종료시키고 받아온 데이터를 이용해 View를 갱신한다.

     //프로그래스 바 시작
        loagindDialog = ProgressDialog.show(this, "로딩중",
                "Loding...please wait", true, false);
        //쓰레드 시작: 네트워크로 부터 데이터 받아옴
        thread = new Thread(new Runnable() {
            public void run(){
                try {
                    source = new Source(new URL("http://sports.media.daum.net/baseball/kbo/record/main.daum"));
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                source.fullSequentialParse();
                avgList = getRecordArr(source, REC_TYPE_AVG);
                hitList = getRecordArr(source, REC_TYPE_HIT);
                hrList = getRecordArr(source, REC_TYPE_HR);
                rbiList = getRecordArr(source, REC_TYPE_RBI);
                eraList = getRecordArr(source, REC_TYPE_ERA);
                soList = getRecordArr(source, REC_TYPE_SO);
                svList = getRecordArr(source, REC_TYPE_SV);
                wList = getRecordArr(source, REC_TYPE_W);
    //핸들러에게 종료 메세지를 보내줌
                handler.sendEmptyMessage(0);
            }
        });
        thread.start();
 
     // 핸들러는 프로그래스 바를 종료하고 데이터를 View에 채운다.
     private Handler handler = new Handler() {
            public void handleMessage(Message msg) {
                loagindDialog.dismiss();
                //받아온 데이터를 이용해 뷰 갱신.
                fillRecordData("타자(타율)", avgList);
                fillRecordData("타자(타점)", hitList);
                fillRecordData("타자(홈런)", hrList);
                fillRecordData("타자(안타)", rbiList);
               
                TextView tv = new TextView(RecordAct.this);
                tv.setText("투수 부분");
                tv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 35));
                tv.setBackgroundDrawable(RecordAct.this.getResources().getDrawable(R.drawable.title_shape));
                tv.setTextSize(15.0f);
                tv.setTextColor(Color.BLACK);
                tv.setGravity(Gravity.CENTER);
               
                TableLayout tl = (TableLayout)findViewById(R.id.record_table);
                tl.addView(tv);
               
                fillRecordData("투수(방어율)", eraList);
                fillRecordData("투수(탈삼진)", soList);
                fillRecordData("투수(세이브)", svList);
                fillRecordData("투수(다승)", wList);
            }
        };
신고
Posted by AppleSherbet

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

티스토리 툴바