설정 : 4 단계의 활동을 통해 postdelayed 처리기를 사용하여 두 개 이상의 중첩 된 postdelays를 일시 중지합니다.지연된 처리기/실행 가능 파일에서 일시 중지/대기하고 일시 중지 된 코드를 계속 활성화합니다.
타임 라인 :
1 단계 | 코드 발사 | 2 단계 | 코드 발사 | 3 단계 | 코드 발사 | stage4
스테이지 1 : 사용자 상호 작용 : 비활성화 (대부분) countdowntimer
스테이지 3를 포함하여 사용자에 대한 시각과 : 2 countdowntimer
stage4와 비활성화를 비활성화, 그냥
스테이지 2에 AlertDialog 정의를 보여줍니다 카운트 다운 또는 추가 중지 없음
버튼을 누르면 사용자가 스테이지 2로 건너 뛸 수 있기를 원합니다. 그러면 카운트 다운 타이머와 사후 지연이 취소됩니다 (wi 두 번째와 각각을 개별적으로 취소하려고했지만 성공하지 못했습니다. 여기에 사용한 명령이 있습니다.
countdowntimer.cancel(); // this didn't work from the button or a void call
handler.removeCallbacks(runnable); // want to skip to end of stage2
시도/catch에 대한 참조가 있거나 검색에서 스레드를 사용하고 있지만 사용법이 확실하지 않거나 적절한 경우를 보았습니다.
입력 해 주셔서 감사합니다.
** 비 작동 코드 참조 편집 : * 내가 어떤을 살해} 또는 경우에 내가 관련이없는 물건의 대부분, 확실하지 절단; 추가
public class Main extends Activity {
public Boolean onOffCDT = true;
public Handler handler2Mem;
public Runnable mem2Runnable = null;
public CountDownTimer aCounter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
aCounter = null;
final Handler handlerMem = new Handler();
final Runnable memRunnable = new Runnable() {
public void run() {
//code
final CountDownTimer aCounter = new CountDownTimer(memTime, 100) {
public void onTick(long millisUntilFinished) {
//update time
if(onOffCDT.equals(false)) {
onOffCDT = true;
// aCounter.cancel();
}
}
public void onFinish() {
title.setText(tempTitle);
}
};
aCounter.start();
Handler handler2Mem = new Handler();
Runnable mem2Runnable = new Runnable() {
public void run() {
//code
CountDownTimer bCounter = new CountDownTimer(8000, 100) {
public void onTick(long millisUntilFinished) {
//update time
}
public void onFinish() {
title.setText(tempTitle);
}
};
bCounter.start();
stage3(8000); //another delay
};
}; handler2Mem.postDelayed(mem2Runnable, memTime);
}
}; handlerMem.postDelayed(memRunnable, 2500);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// this button checks stage#, if stage4 info - else...
}else{
aCounter.cancel();
onOffCDT = false;
cancelCountDown(mem2Runnable, handler2Mem);
}
}
});
}
private void stage3 (Integer tTime) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
//Do Stuff
}
}, tTime);
}
public void cancelCountDown(Runnable run2, Handler hand2) {
hand2.removeCallbacks(run2);
}
그래서 ...의 STA를 취소 할 경우 true로 설정? 다른 누군가? – Toclmi