[java] Android / Java에서 JavaScript setInterval / setTimeout에 해당하는 것은 무엇입니까?

Android에 대해 setInterval / setTimeout에 해당하는 것이 있는지 누구든지 말해 줄 수 있습니까? 아무도 그것을 수행하는 방법에 대한 예가 있습니까?



답변

Android에서 항상 그렇듯이이 작업을 수행하는 방법은 여러 가지가 있지만 나중에 동일한 스레드에서 코드 조각을 실행하고 싶다고 가정하면 다음을 사용합니다.

new android.os.Handler().postDelayed(
    new Runnable() {
        public void run() {
            Log.i("tag", "This'll run 300 milliseconds later");
        }
    },
300);

.. 이것은 거의

setTimeout(
    function() {
        console.log("This will run 300 milliseconds later");
    },
300);


답변

setInterval ()

n 밀리 초마다 반복되는 함수

자바 스크립트

 setInterval(function(){ Console.log("A Kiss every 5 seconds"); }, 5000);

대략적인 자바 상당

new Timer().scheduleAtFixedRate(new TimerTask(){
    @Override
    public void run(){
       Log.i("tag", "A Kiss every 5 seconds");
    }
},0,5000);

setTimeout ()

n 밀리 초 후에 만 ​​작동하는 함수

자바 스크립트

setTimeout(function(){ Console.log("A Kiss after 5 seconds"); },5000);

대략적인 자바 상당

new android.os.Handler().postDelayed(
    new Runnable() {
        public void run() {
            Log.i("tag","A Kiss after 5 seconds");
        }
}, 5000);


답변

휴대 전화를 깨우거나 앱을 죽은 상태에서 되 돌리는 것이 걱정되지 않는다면 다음을 시도해보세요.

// Param is optional, to run task on UI thread.     
Handler handler = new Handler(Looper.getMainLooper());
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // Do the task...
        handler.postDelayed(this, milliseconds) // Optional, to repeat the task.
    }
};
handler.postDelayed(runnable, milliseconds);

// Stop a repeating task like this.
handler.removeCallbacks(runnable);


답변

실제로 달성하고자하는 것에 따라 Android 핸들러를 살펴 봐야합니다.

http://developer.android.com/reference/android/os/Handler.html

이전에 javascript setTimeout () 등을 사용하여 향후 작업을 실행하도록 예약 한 경우 이것이 Android 방식 (postDelayed / sendMessageDelayed)입니다.

핸들러 또는 타이머 모두 Android 휴대 전화를 절전 모드에서 깨우지 않습니다. 즉, 화면이 꺼져 있거나 CPU가 절전 상태 인 경우에도 실제로 일어나도록 예약하려면 AlarmManager도 확인해야합니다.


답변

JavaScript에 대해 잘 모르지만 Timers가 당신이 찾고있는 것일 수 있다고 생각합니다.

http://developer.android.com/reference/java/util/Timer.html

링크에서 :

원샷은 절대 시간 또는 상대적 지연 후에 실행되도록 예약됩니다. 반복 작업은 고정 된 기간 또는 고정 된 속도로 예약됩니다.


답변

첫 번째 대답은 확실히 정답이며 구문이 훨씬 더 짧은이 람다 버전을 기반으로 한 것입니다. Runnable에는 “run ()”재정의 메서드가 하나만 있으므로 람다를 사용할 수 있습니다.

this.m_someBoolFlag = false;
new android.os.Handler().postDelayed(() -> this.m_someBoolFlag = true, 300);


답변

import java.util.Timer;
import java.util.TimerTask;

class Clock {
    private Timer mTimer = new Timer();

    private int mSecondsPassed = 0;
    private TimerTask mTask = new TimerTask() {
        @Override
        public void run() {
            mSecondsPassed++;
            System.out.println("Seconds passed: " + mSecondsPassed);
        }
    };

    private void start() {
        mTimer.scheduleAtFixedRate(mTask, 1000, 1000);
    }

    public static void main(String[] args) {
        Clock c = new Clock();
        c.start();
    }
}