forked from NativeScript/NativeScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtimer.android.ts
More file actions
64 lines (49 loc) · 1.5 KB
/
timer.android.ts
File metadata and controls
64 lines (49 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* Android specific timer functions implementation.
*/
var timeoutHandler;
var timeoutCallbacks = {};
function createHadlerAndGetId(): number {
if (!timeoutHandler) {
timeoutHandler = new android.os.Handler(android.os.Looper.getMainLooper());
}
return new Date().getUTCMilliseconds();
}
export function setTimeout(callback: Function, milliseconds = 0): number {
var id = createHadlerAndGetId();
var runnable = new java.lang.Runnable({
run: () => {
callback();
if (timeoutCallbacks && timeoutCallbacks[id]) {
timeoutCallbacks[id] = null;
}
}
});
if (!timeoutCallbacks[id]) {
timeoutCallbacks[id] = runnable;
}
timeoutHandler.postDelayed(runnable, long(milliseconds));
return id;
}
export function clearTimeout(id: number): void {
if (timeoutCallbacks[id]) {
timeoutHandler.removeCallbacks(timeoutCallbacks[id]);
timeoutCallbacks[id] = null;
}
}
export function setInterval(callback: Function, milliseconds = 0): number {
var id = createHadlerAndGetId();
var handler = timeoutHandler;
var runnable = new java.lang.Runnable({
run: () => {
callback();
handler.postDelayed(runnable, long(milliseconds));
}
});
if (!timeoutCallbacks[id]) {
timeoutCallbacks[id] = runnable;
}
timeoutHandler.postDelayed(runnable, long(milliseconds));
return id;
}
export var clearInterval = clearTimeout;