首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能使Tizen应用程序不间断地存活?

是否有可能使Tizen应用程序不间断地存活?
EN

Stack Overflow用户
提问于 2018-04-10 11:44:31
回答 2查看 3.8K关注 0票数 15

最近,我开始为Tizen操作系统开发。我的应用程序只为可穿戴和特定的设备创建,这是三星齿轮运动(Tizen3.0船上)。此应用程序的主要目的是在很长一段时间内收集完整的传感器数据。我对心率和运动传感器(陀螺仪和加速度计)很感兴趣。然后,将这些数据发送到云服务器并进行分析。目前,我正在考虑WEB应用程序,因为到目前为止,我还没有发现任何证据表明WEB缺少存在于本机API中的内容。

但是Tizen中有一个限制是我至今无法克服的。我的应用程序会在一段时间后(大约10分钟)进入睡眠状态。这是至关重要的,这个应用程序应该在后台工作很长时间(多达10个小时)。为了实现这一点,我尝试了以下方法:

  • 带有背景类别的普通Tizen应用程序:通过这种方法提供的数据仍然过于零散,例如,我有15分钟的漏洞,根本没有记录数据。有时洞甚至超过30分钟。
  • Tizen警报API:警报是为了确保应用程序的正常运行而做的,但是每次报警时,app都被带到了最前面,这不是一个可以接受的解决方案。有一个选项,可以悄悄唤醒应用程序(使用应用程序控制),但它没有任何回调,所以所有的警报都必须提前排定。
  • CPU_AWAKE标志让系统显示“这个应用程序消耗了太多的能量”弹出,如果在10分钟内没有回复,系统仍然会杀死我的应用程序。
  • Workers --这只是为了便于争论,web工作者和应用程序一起进入睡眠状态。
  • 数据记录:我希望得到类似于苹果健康工具包的东西,但是我却得到了一些根本不适用于人力资源管理的东西。不知何故,它适用于PRESSURE传感器。Tizen允许开始为HRM录制,但是在- NotFoundError: Failed to read recorded data之后没有任何记录.任何其他传感器都会给TypeMismatchError
  • 网络服务应用程序--这一应用需要与三星进行合作伙伴级认证,同时也受到背景限制正如文件所提到的。的影响
  • Watch面对方法,在设备设置中将“始终保持打开”标志设置为true。这个解决方案是我尝试过的最好的方法。“手表脸”应用程序每分钟都会醒来,以改变时间,同时它还接收传感器数据。不幸的是,经过更多的测试后,在记录的数据中发现了一些漏洞。

关于电池:上述任何一项都没有把电池耗尽到不能接受的程度。因此,首先,我想找到一个解决方案,给我所有我需要的传感器数据,尽可能多地从至少10个小时开始,没有漏洞。在那之后,如果这个解决方案消耗了太多的电池,我会考虑如何优化它。

现在的问题是:是否可以让我的应用程序不间断地运行10+?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-26 14:56:47

我花了好几个星期试图找到这个问题的解决办法。我最近接触到的无时无刻不在工作的应用程序是创建多包应用程序(也称为混合应用程序),其中包括:

  • 用JS编写的WEB应用程序,这是一个手表脸应用程序
  • 用C编写的本机服务应用程序(无UI)

所有的应用都是针对Tizen 2.3.1的。这是关键部分,因为3.0 API存在多个问题,比如操作系统意外地杀死了应用程序,或者提示“电池使用量过大”,有时也会导致我的应用程序被杀死。Tizen操作系统的有趣之处在于,当它由于过多的资源使用而杀死了手表脸应用程序时,手表的主屏幕就是纯黑色的。不幸的是,针对API 2.3.1导致无法使用在此版本之后添加的多个API。

接下来,我在所有本地服务应用程序中都使用了device_power_request_lock(POWER_LOCK_CPU, 0);。我相信使用旧的API (2.3.1而不是3.0)可以使应用程序在不被系统杀死的情况下工作得更长。我认为这是我利用过的Tizen版本中的一个缺陷。

在WEB应用程序中,我使用了ScreenStateChangeListener和timetick来检查服务应用程序是否正在运行。如果不是->,它是由WEB应用程序启动的。对于服务和监视面之间的通信,我使用了preferences监听器API。Watch face应用程序负责检查哪些服务正在运行,哪些服务需要唤醒或启动。

最后,我使用了与WEB应用程序一起打包的4个本地服务应用程序。每个服务应用程序都有自己的目的,比如文件系统、网络、监控等等。多线程服务应用程序确实很难维护,并且经常因为未知的原因而崩溃。

票数 6
EN

Stack Overflow用户

发布于 2018-06-12 09:47:07

如果您的目标是本机ServiceAppAPI3.0,请获得以下内容:

代码语言:javascript
复制
device_power_request_lock(POWER_LOCK_CPU, 0);
sensor_listener_set_option(listener,  SENSOR_OPTION_ALWAYS_ON);
sensor_listener_set_attribute_int(listener, SENSOR_ATTRIBUTE_PAUSE_POLICY, SENSOR_PAUSE_NONE);

不要忘记在清单中设置背景类别(传感器+位置,如果需要的话),否则Tizen会在10分钟后杀死你的应用程序。

当然,几乎没有任何一件事情被正确地记录下来..。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49752776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档