アニメーション/ゲーム/... に使用される surfaceView クラスがある場合、同じクラスに onTouchEvent() メソッドと描画/画面更新メソッドがあります。ここで、onTouchEvent メソッドをスリープさせたいので、1 秒間に +-80 回呼び出されて CPU があふれないようにします (したがって、遅延が発生します)。問題は、このクラスをスリープ状態にすると、描画も停止することです。
**Edit88 onTouchEvent() が頻繁に呼び出されるのを止めようとしています。私の試み:
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("firstTest",Integer.toString(event.getAction())); //shows up
if (!sleeper.CurrentlySleeping) {
Log.d("2ndTest",Integer.toString(event.getAction())); //not showing up
~~ some calculations and stuff ~~
.
public class TouchSleeper extends Thread {
// If Thread is sleeping or not.
public static Boolean CurrentlySleeping;
public TouchSleeper() {
CurrentlySleeping = false;
this.setPriority(MIN_PRIORITY);
}
@Override
public void run() {
try {
while (true) {
CurrentlySleeping = true;
TouchSleeper.sleep(50);
CurrentlySleeping = false; }
~end~
まず、SurfaceView クラスのコードです。ブール値を変更し続けるクラス/スレッドの 2 番目の部分。最初の Log.d は何かを返し、2 番目の Log.d は返さないことに注意してください。これは、CurrentlySleeping が決して false ではないことを示しています。私はまだ物事を理解していない...?