UNPKG

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
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;