Android / Java에서 JavaScript setInterval / setTimeout에 해당하는 것은 무엇입니까?
안드로이드에 대해 setInterval / setTimeout에 해당하는 것이 있으면 누구든지 말해 줄 수 있습니까? 아무도 그것을하는 방법에 대한 예가 있습니까?
항상 안드로이드와 마찬가지로이 작업을 수행하는 방법은 많이 있지만, 동일한 스레드에서 약간의 코드를 약간 실행하고 싶다고 가정하면 다음과 같이 사용합니다.
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);
대략적인 Java 동등
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);
대략적인 Java 동등
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
Log.i("tag","A Kiss after 5 seconds");
}
}, 5000);
실제로 달성하고자하는 것에 따라 Android 처리기를 살펴보십시오.
http://developer.android.com/reference/android/os/Handler.html
이전에 Javascript setTimeout () 등을 사용하여 향후 작업 실행을 예약 한 경우 Android에서 수행하는 방법입니다 (postDelayed / sendMessageDelayed).
처리기 나 타이머는 Android 전화를 절전 모드에서 깨우지 않습니다. 다시 말해서, 화면이 꺼져 있거나 CPU가 잠자기 상태 일 때 실제로 발생하는 일정을 예약하려면 AlarmManager도 확인해야합니다.
휴대 전화를 깨우거나 앱을 다시 죽일 걱정이 없다면 다음을 시도해보십시오.
// 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.
hander.removeCallbacks(runnable);
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();
}
}
Here's a setTimeout equivalent, mostly useful when trying to update the User Interface after a delay.
As you may know, updating the user interface can only by done from the UI thread. AsyncTask does that for you by calling its onPostExecute method from that thread.
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();
The first answer is definitely the correct answer and is what I based this lambda version off of, which is much shorter in syntax. Since Runnable has only 1 override method "run()", we can use a lambda:
this.m_someBoolFlag = false;
new android.os.Handler().postDelayed(() -> this.m_someBoolFlag = true, 300);
I was creating a mp3 player for android, I wanted to update the current time every 500ms so I did it like this
setInterval
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);
}
which calls the same method recursively
'programing tip' 카테고리의 다른 글
SQL- 문자열 검색 중 대소 문자 무시 (0) | 2020.07.27 |
---|---|
오류 : 해당 속성 없음 : GROUP. 클래스 : org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer (0) | 2020.07.26 |
NestedScrollView 내부의 리사이클 러보기로 인해 스크롤이 중간에 시작됩니다 (0) | 2020.07.26 |
특정 열을 선택하는 Spring JPA (0) | 2020.07.26 |
rc.exe로 인해 Visual Studio를 빌드 할 수 없습니다 (0) | 2020.07.26 |