我有一个SW2的应用程序,它有一个用户选项,用于选择是否应该使用低功耗模式(LPM)。哪个工作正常。问题是SW API首次启动时只调用我应用程序的supportsLowPowerMode()注册方法一次。这意味着如果用户稍后更改了我的应用程序中的设置,它将无法生效,直到整个shebang重新启动。
我尝试了一些技巧(比如杀死我的应用程序的过程)以强制重新加载,但到目前为止还没有任何工作。我的最后一招是告诉用户他/她需要重新启动手机才能生效,但这很不错。还有更好的方法吗?
答案 0 :(得分:1)
解决方案不是尝试在运行时更改对supportsLowPowerMode()
的响应,而是尝试更改启动和停止扩展程序。
基本上,如果您的扩展程序曾支持LPM,那么它应该在true
中返回supportsLowPowerMode()
的值。如果扩展程序的LPM使用情况可能发生变化,您可以通过在onActiveLowPowerModeChange()
处理程序中执行不同的操作来处理该问题。具体来说,如果用户选择不使用LPM,则需要一个如下所示的处理程序:
@Override
public void onActiveLowPowerModeChange(boolean lowPowerModeOn) {
super.onActiveLowPowerModeChange(lowPowerModeOn);
if (lowPowerModeOn) {
// User doesn't want to use LPM, so stop the app on the SW
stopRequest();
}
}
这样可以在设备的背光关闭时关闭分机,并且它会回落到默认的LPM表盘。
编辑:我重新打开这个,因为我发现上述技术有不可接受的副作用。如果您的应用返回false
至supportsLowPowerMode()
,则当手表进入睡眠状态时,SW2将在后台继续运行(但暂停)。这意味着,当用户“醒来”时#34; SW2,您的应用程序将立即重新出现在屏幕上。调用stopRequest()
(如上面的代码示例中所示)会中断此行为,要求用户在唤醒SW2后重新打开您的应用。我没有找到任何办法解决这个问题;我们需要的是pauseRequest()
,但API没有。
答案 1 :(得分:1)
据我所知,无法在运行时更改此信息。让我与我的团队仔细检查,以防万一有一种我不知道的方式。