我是本机和实施简单应用程序的新手,其中应用程序将监视手机的时钟时间,并应设置一些标志,以便在用户启动应用程序时通知用户执行某些任务。
我想在React Native应用程序中连续监视移动设备的时钟时间作为后台作业,以便在用户打开应用程序且如果已经过去特定时间时,它应该设置一些标志以做出将来的决定。
经过对博客的一些研究,我发现可以使用react-native-background-task和/或background-timers。但是我发现很难实施它。谁能帮我实现相同的示例。 先感谢您。
答案 0 :(得分:0)
因此,从您的帖子中,我将假设一些事情。您将要在Android和iOS上进行开发,您只想使用一个插件(而不是自己编写模块)。
不幸的是,除非我弄错了-没有简单的答案,我会解释。
随着Android和iOS的发展,他们开始限制在后台使用Apps,特别是Android进入“打ze”模式,iOS的运行方式与此类似。
对于Android,您需要考虑一些事项,而我将专注于这些事项,因为在实际创建RN应用之前,您需要了解这一点。
打ze模式
Android从Android 6.0(API级别23)开始,引入了两个 节电功能可通过管理来延长用户的电池寿命 设备未连接电源时应用程序的行为方式。瞌睡 通过延迟后台CPU和网络来减少电池消耗 设备长时间不使用时的应用活动。 App Standby推迟了与 用户最近没有互动。
设备处于打Do状态时,应用访问某些耗电量大的电池 资源延迟到维护窗口。具体的 限制列在“电源管理限制”中。
打ze和App Standby管理运行在其上的所有应用程序的行为 Android 6.0或更高版本,无论它们是否专门 定位到API级别23。为确保为用户带来最佳体验,请进行测试 您的应用处于打ze和应用待机模式,并进行必要的操作 调整您的代码。以下各节提供了详细信息。
重要的是,您需要注意:
系统不允许同步适配器运行。
系统不允许JobScheduler运行。
因此,对于android,首先(可能)您需要确保您的应用程序位于“白名单”中。您可以在此处查看列表的要求:
https://developer.android.com/training/monitoring-device-state/doze-standby
或者,您可以使用如下所示的插件访问维护窗口:
https://github.com/transistorsoft/react-native-background-fetch
测试
Android为您提供了一些工具,主要运行:
$ adb shell dumpsys battery unplug
$ adb shell am set-inactive <packageName> true
无头JS
您可以签出适合您情况的无头任务:
https://facebook.github.io/react-native/docs/headless-js-android
注意事项:
尽管 Android 指出操作系统本身的行为与所记录的一样,但设备本身可以具有内置的软件,该软件实质上可以杀死后台进程。诺基亚是最糟糕的之一。因此,请注意这一点。