JavaScript 세트에 해당하는 것은 무엇입니까?Android/Java의 Interval/setTimeout?
Android용 setInterval/setTimeout과 동등한 제품이 있는지 알려주시겠습니까?어떻게 하는지에 대한 예시를 가지고 있는 사람 있나요?
Android에서는 항상 그렇듯이 많은 방법이 있지만, 잠시 후에 같은 스레드에서 코드를 실행하고 싶다고 가정하면 다음과 같이 하겠습니다.
new android.os.Handler(Looper.getMainLooper()).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);
set Interval()
n밀리초마다 반복되는 함수
자바스크립트
setInterval(function(){ Console.log("A Kiss every 5 seconds"); }, 5000);
Java에 상당하는 근사치
new Timer().scheduleAtFixedRate(new TimerTask(){
@Override
public void run(){
Log.i("tag", "A Kiss every 5 seconds");
}
},0,5000);
set Timeout()
n밀리초 후에만 기능하는 함수
자바스크립트
setTimeout(function(){ Console.log("A Kiss after 5 seconds"); },5000);
Java에 상당하는 근사치
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() 등을 사용하여 향후 작업을 스케줄했다면 안드로이드 방식(postDelayed/sendMessageDelayed)입니다.
핸들러와 타이머 모두 Android 전화기를 sleep 모드에서 복귀시키지 않습니다.즉, 화면이 꺼지거나 CPU가 sleeve 상태에서도 실제로 어떤 일이 일어나도록 스케줄 하려면 Alarm Manager도 체크해야 합니다.
첫 번째 답은 분명 정답이고 이 람다 버전을 기반으로 한 것입니다. 구문에서 훨씬 더 짧습니다.Runnable의 오버라이드 메서드 "run()"은 1개뿐이므로 람다를 사용할 수 있습니다.
this.m_someBoolFlag = false;
new android.os.Handler().postDelayed(() -> this.m_someBoolFlag = true, 300);
JavaScript에 대해서는 잘 모르지만, 당신이 찾고 있는 것은 Timers라고 생각합니다.
http://developer.android.com/reference/java/util/Timer.html
링크에서:
원샷은 절대 시간 또는 상대 지연 후에 실행되도록 스케줄링됩니다.반복 작업은 고정 기간 또는 고정 비율로 예약됩니다.
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();
}
}
안드로이드용 mp3 플레이어를 만들고 있었는데 500ms마다 현재 시간을 업데이트 하고 싶어서 이렇게 했습니다.
set Interval
private void update() {
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
long cur = player.getCurrentPosition();
long dur = player.getDuration();
currentTime = millisecondsToTime(cur);
currentTimeView.setText(currentTime);
if (cur < dur) {
updatePlayer();
}
// update seekbar
seekBar.setProgress( (int) Math.round((float)cur / (float)dur * 100f));
}
}, 500);
}
같은 메서드를 재귀적으로 호출합니다.
다음은 set Timeout에 상당하는 것으로, 지연 후 사용자 인터페이스를 업데이트하려고 할 때 주로 유용합니다.
아시다시피 UI 스레드에서만 사용자 인터페이스를 업데이트할 수 있습니다.AsyncTask는 OnPost를 호출하여 이를 수행합니다.그 스레드에서 메서드를 실행합니다.
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Update the User Interface
}
}.execute();
Android에서는 항상 그렇듯이 많은 방법이 있지만, 단순히 같은 스레드에서 코드를 실행하고 싶다고 가정하면 다음과 같이 합니다.
new Timer().scheduleAtFixedRate(new TimerTask(){
@Override
public void run(){
Log.i("tag", "Hai Codemaker");
}
},0,1000);
이 코드는 1초마다 Hai Codmaker 텍스트를 기록합니다.
코틀린:
Count Down Timer 를 사용할 수도 있습니다.
class Timer {
companion object {
@JvmStatic
fun call(ms: Long, f: () -> Unit) {
object : CountDownTimer(ms,ms){
override fun onFinish() { f() }
override fun onTick(millisUntilFinished: Long) {}
}.start()
}
}
}
그리고 당신의 코드:
Timer.call(5000) { /*Whatever you want to execute after 5000 ms*/ }
언급URL : https://stackoverflow.com/questions/4817933/what-is-the-equivalent-to-a-javascript-setinterval-settimeout-in-android-java
'sourcecode' 카테고리의 다른 글
Kotlin에서 "Activity.this"에 액세스하는 방법 (0) | 2022.08.19 |
---|---|
Vue를 사용한 검색 상자 및 확인란 필터 (0) | 2022.08.19 |
Testcafe로 작성된 UI 테스트 디버깅 (0) | 2022.08.19 |
vue.js 2에서 슬롯이 렌더링되면 컴포넌트의 높이를 측정합니다. (0) | 2022.08.19 |
템플릿 Vue 내에 스크립트 태그를 삽입합니다. (0) | 2022.08.17 |