Sponsored By
















 

AsyncTask사용하기. 메인쓰레드와 새로운쓰레드내의 하나의 실행 단위라고 생각하면됨.

 

 

 

 

 

 

00. 진행상태를 보기위해 프로그레스바를 만든다.







01. 버튼을 만든다.







02. 정지시킬 버튼을 만든다.







03. 플레인텍스트를 만들어 진행상황을 보여주자.







04. 주석 참조.

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        textView = (TextView) findViewById(R.id.textView);

        progressBar = (ProgressBar) findViewById(R.id.progressBar);

    }

 

    public void button01(View v){ /* 버튼2에대한 메소드값 추후 입력 */ }

    public void button02(View v){ /* 버튼2에대한 메소드값 추후 입력 */ }

 

    class BackgroundTask extends AsyncTask<Integer, Integer, Integer>{

        @Override //처음에 클래스를 만들고나서 ALT+ENT 눌러서 기본 오버라이드 하자.

        protected Integer doInBackground(Integer... params) {

             return null;

         }

    }

}

 

그리고 마우스오른쪽버튼->Generate->Override 버튼을 순서대로 눌러서 아래와같이 3가지 메소드를 오버라이딩하자.







05. 코드를 완성하자.

package com.example.joey.myasynctasktest;

import android.os.AsyncTask;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.ProgressBar;

import android.widget.TextView;

 

public class MainActivity extends AppCompatActivity {

 

    TextView textView;

    ProgressBar progressBar;

    int value = 0;

    BackgroundTask task;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        textView = (TextView) findViewById(R.id.textView);

        progressBar = (ProgressBar) findViewById(R.id.progressBar);

    }

 

    public void button01(View v){

        task = new BackgroundTask();

        task.execute(100);

    }

    public void button02(View v){

        task.cancel(true);

    }

 

    class BackgroundTask extends AsyncTask<Integer, Integer, Integer>{

        @Override

        protected void onPostExecute(Integer integer) {

            value = 0;

            progressBar.setProgress(value);

            textView.setText("마침.");

        }

        @Override

        protected void onPreExecute() {

            value = 0;

            progressBar.setProgress(value);

        }

        @Override

        protected void onProgressUpdate(Integer... values) {

            progressBar.setProgress(values[0].intValue());

            textView.setText("진행중 :" + values[0]);

        }

 

        @Override

        protected Integer doInBackground(Integer... params) {

            while(!isCancelled()){

                value++;

                if(value >= 100){

                    break;

                } else {

                    publishProgress(value);

                }

                try{

                    Thread.sleep(100);

                } catch (Exception e){}

            }

            return value;

        }

    }

}







06. 실행시켜보자.







07. 시작버튼을 눌러보자.







08. 정상작동됨을 볼 수 있고 중간에 중지 버튼을 눌러서 중지되는지 확인해보자.







09. 중지됨을 확인 할 수 있다. 시작을 눌러서 끝까지 진행시켜보자.







10. 시작버튼을 눌렀을때 int value = 0; 으로 초기화 시켜서 0부터 다시시작됨을 볼 수 있다. 

 



Sponsored By















+ Recent posts