마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

countDownTimer 리셋 관련 질문 입니다.

0 추천

사용자입력(터치)가 있으면 화면에 표시하고

사용자 입력이 없이 일정시간이 경과하면 어플리케이션이 종료되는 동작을 구현하고 있는 초보개발자 입니다.

 

앱이 실행될때 타이머가 같이 작동하게 되고 계속 입력이 없으면 그대로 종료되고

OnTouchListener에서 입력이 들어오면 다시 타이머를 최기화 시키고자 합니다

 

터치하면 카운팅이 올라가는것도 되고, 앱 실행하고 10초간 아무 입력 없으면 종료되는것 까지 됩니다.

 

근데 타이머 리셋이 한줄이면 될꺼 같은데 그게 참 마음같이 안되서 계속 막히고 있습니다.

리셋을 시키는 방법이 따로 있는 것인지 배우고 싶습니다

 

package org.androidtown.l;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.EditText;


public class MainActivity extends Activity {

	EditText editText1;
	int touchCount = 0;
	
	
	
	@Override
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		new CountDownTimer(10000,10000){
			public void onTick(long millisUntilFinished) {
				finish();
				}
			public void onFinish() {
				finish();
			}
		}.start();
		
		editText1 = (EditText) findViewById(R.id.editText1);
		View view1 = (View) findViewById(R.id.view1);
		view1.setOnTouchListener(new OnTouchListener() {
			public boolean onTouch(View v, MotionEvent event){
				
				if(event.getAction() == MotionEvent.ACTION_DOWN){
					incrTouchCount();
					showTouchCount();
					timerReset();
					//터치가 입력되면 위 세개 동작 실행
		
				}	
				return true;
			}
		});
			}

	private void incrTouchCount() {
		touchCount = touchCount + 1;
	}
	
	private void showTouchCount() {
		editText1.setText("터치한 횟수 : " + touchCount);
	}
	private void timerReset() {
		// 이곳에 타이머 리셋
	}
		
	public void onButton1Clicked(View v) {
		finish();
	}	
}

 

ruaehd (140 포인트) 님이 2015년 1월 13일 질문

1개의 답변

+1 추천
public class MainActivity extends Activity {
 
    EditText editText1;
    int touchCount = 0;
    CountDownTimer timer = null; 
     
     
    @Override
     
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        timer = new CountDownTimer(10000,10000){
            public void onTick(long millisUntilFinished) {
                finish();
                }
            public void onFinish() {
                finish();
            }
        };

        timer .start();
         
        editText1 = (EditText) findViewById(R.id.editText1);
        View view1 = (View) findViewById(R.id.view1);
        view1.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event){
                 
                if(event.getAction() == MotionEvent.ACTION_DOWN){
                    incrTouchCount();
                    showTouchCount();
                    timerReset();
                    //터치가 입력되면 위 세개 동작 실행
         
                }   
                return true;
            }
        });
            }
 
    private void incrTouchCount() {
        touchCount = touchCount + 1;
    }
     
    private void showTouchCount() {
        editText1.setText("터치한 횟수 : " + touchCount);
    }
    private void timerReset() {
        // 이곳에 타이머 리셋
        timer.cancel();
        timer.start();
    }
         
    public void onButton1Clicked(View v) {
        finish();
    }   
}

한번 해보시길 될지는 잘모르겠네요;

익명사용자 님이 2015년 1월 13일 답변
타이머가 다시 리셋되고 작동할때 약간 1~2초정도 딜레이가 생기는거 같긴 하지만
동작은 잘 되네요 감사합니다.
...