볼륨 업키 혹은 다운키를 누르고 있으면 count 가 0에서 매 1초마다 1씩증가 하다고
키에서 손을때면 증가하는게 멈추게 하고 싶은데 생각처럼 잘되지 않습니다.
누르고있을때마다 ACTION_DOWN이 실행 되다보니 onHandler1();을 탈떄마다 1초에 수십초씩 증가되네요(중첩현상) ;; 해결방안을 찾고 싶은데 계속 헛수고입니다 ....
package com.example.touchcountexample;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.TextView;
public class MainActivity extends Activity {
private boolean flag = true;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (event.getAction() == MotionEvent.ACTION_DOWN) {
onHandler1();
}
if (event.getAction() == MotionEvent.ACTION_UP) {
mHandler.removeCallbacks(r);
}
break;
case KeyEvent.KEYCODE_VOLUME_UP:
Log.i("test", "Volume Up");
break;
}
return true;
}
int count = 0;
private Handler mHandler;
private Runnable r;
private void onHandler1() {
mHandler = new Handler();
r = new Runnable() {
@Override
public void run() {
count++;
((TextView) findViewById(R.id.count_text)).setText(String
.valueOf(count));
mHandler.postDelayed(r, 1000);
}
};
mHandler.postDelayed(r, 1000);
}
}