일정, 특정 시간 후에 어떤 작업을 해야 할 경우 아래와 같이 타이머를 쓸 수 있다. 하지만 이렇게 사용할 경우 TimerTask is scheduled already 에러를 만나 앱을 죽일 수 있다. public void stopTimer() { mTask = new TimerTask() { @Override public void run() { mTimer = new Timer(); ....... }; mTimer = new Timer(); if(mTimer != null) { mTimer.schedule(mTask, 10000); ....} 이 경우에는 아래와 같은 방법으로 에러를 피할 수 있다. public StropTimerTask stopTimerTask; public void reSchedul..
UI 가 있는 곳에서 스레드 작업을 조금 길게 하면 화면에 버벅거리면서 아예 멈추는 경우도 발생한다. 하지만 스레드 대신 AsyncTask를 사용하면 이런 현상을 말끔히 해결해준다. class MainForReadyInitAsyncTask extends AsyncTask { @Override protected void onPostExecute(Void result) { // 작업이 완료 된 후 할일 super.onPostExecute(result); } @Override protected void onPreExecute() { // 작업을 시작하기 전 할일 super.onPreExecute(); } @Override protected Void doInBackground(Void... params) { /..