Intent intent = new Intent(MainActivity.this, TimerActivity.class);
startActivity(intent);
public class TimerActivity extends Activity {
long IAvailableDate;
long ILeaveDay;
Integer mDay,mHour,mMin,mSec;
TextView timer_text;
String timer_sec;
TimerTask timerTask;
Timer timer;
private final Handler handler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_timer);
timer_text = (TextView) findViewById(R.id.txt);
testStart();
}
public void testStart() {
if(timerTask != null){
timerTask.cancel(); //타이머task를 timer 큐에서 지워버린다
timerTask=null;
}
if(timer!=null){
timer.cancel(); //스케쥴task과 타이머를 취소한다.
timer.purge(); //task큐의 모든 task를 제거한다.
timer=null;
}
Calendar gameDate = null;
gameDate = Calendar.getInstance();
gameDate.set(2017,02,21,00,00,00);
IAvailableDate = gameDate.getTimeInMillis();
timerTask = new TimerTask() {
@Override
public void run() {
Calendar gameDate2 = null;
gameDate2 = Calendar.getInstance();
ILeaveDay = IAvailableDate - gameDate2.getTimeInMillis();
if(ILeaveDay > 0){
gameDate2.setTimeInMillis(ILeaveDay);
mDay = gameDate2.get(Calendar.DATE);
if(mDay > 1){
//몇일인지 표현 안하고 시간으로만 표시하기 위해 처리
mHour = ((mDay-1)*24)+(gameDate2.get(Calendar.HOUR_OF_DAY)-9);
}else{
mHour = gameDate2.get(Calendar.HOUR_OF_DAY)-9;
}
mMin = gameDate2.get(Calendar.MINUTE);
mSec = gameDate2.get(Calendar.SECOND);
}
Log.i("timerTask객체", String.valueOf(timerTask));
if(mHour == null && mMin == null && mSec == null || mHour == 0 && mMin == 0 && mSec == 0){
timer_sec = "종료";
}else{
timer_sec = "남은시간 "+mHour+" : "+mMin+" : "+mSec;
}
Update();
}
};
timer = new Timer();
timer.schedule(timerTask, 0, 1000);
}
protected void Update() {
Runnable updater = new Runnable() {
public void run() {
timer_text.setText(timer_sec);
}
};
handler.post(updater);
}
}
../timerTask객체: com.timertaskex.TimerActivity$1@20fb3a26
../timerTask객체: com.timertaskex.TimerActivity$1@20fb3a26
../timerTask객체: com.timertaskex.TimerActivity$1@20fb3a26
../timerTask객체: com.timertaskex.TimerActivity$1@20fb3a26
../timerTask객체: com.timertaskex.TimerActivity$1@1cce89ac
../timerTask객체: com.timertaskex.TimerActivity$1@20fb3a26
../timerTask객체: com.timertaskex.TimerActivity$1@1cce89ac
../timerTask객체: com.timertaskex.TimerActivity$1@20fb3a26
../timerTask객체: com.timertaskex.TimerActivity$1@1cce89ac
../timerTask객체: com.timertaskex.TimerActivity$1@18709498
../timerTask객체: com.timertaskex.TimerActivity$1@20fb3a26
../timerTask객체: com.timertaskex.TimerActivity$1@1cce89ac
안녕하세요. 눈팅으로만 찾아보다가 도저히 답이 안나와 질문드립니다..ㅠㅠ 보시는 바와 같이 메인에서 TimerActivity를 호출하여 타이머를 작동시키는데 호출 후 메인액티비티로 돌아가 다시 또 TimerActivity를 호출하면 timeTask객체가 if(timerTask != null) 조건에 걸리지 않고 새로 생성되네요. 그래서 로그를 보시면 timerTask객체가 여러개 생성되버리네요.. 찾아본 정보로는 if(timerTask != null) 이렇게 조건을 주어서 기존 객체를 null로 만들고 새로 생성하는거 같은데 왜 안되는지 원인을 모르겠네요..소중한 답변 부탁드립니다