react-native-android-background-timer
Version:
Emit event periodically (even when app is in the background or the phone is locked)
43 lines (33 loc) • 934 B
JavaScript
import { NativeModules, DeviceEventEmitter } from 'react-native';
const NativeEVOBackgroundTimer = NativeModules.RNAndroidBackgroundTimerModule;
const listeners = {};
let uniqueId = 0;
const nextId = () => uniqueId++;
const RNAndroidBackgroundTimer = {
setInterval(callback, delay){
let id = nextId();
listeners[id] = {
isInterval: true,
callback,
timeout: delay,
};
NativeEVOBackgroundTimer.setTimeout(id, delay);
return id;
},
clearInterval(id){
listeners[id] && delete listeners[id];
}
};
DeviceEventEmitter.addListener("rewieer.backgroundTimer.timeout", (id) => {
const listener = listeners[id];
if(!listener){
return;
}
listener.callback();
if(listener.isInterval){
NativeEVOBackgroundTimer.setTimeout(id, listener.timeout);
return;
}
delete listeners[id];
});
export default RNAndroidBackgroundTimer;