【问题标题】:Sony SmartWatch 2: need to change supportsLowPowerMode() at runtimeSony SmartWatch 2:需要在运行时更改 supportLowPowerMode()
【发布时间】:2014-03-31 00:48:18
【问题描述】:

我有一个适用于 SW2 的应用程序,该应用程序有一个用户选项,用于确定该应用程序是否应使用低功耗模式 (LPM)。哪个工作正常。问题是 SW API 仅在首次启动时调用我的应用程序的 supportsLowPowerMode() 注册方法一次。这意味着如果用户稍后更改我的应用程序中的设置,它将在整个 shebang 重新启动之前生效。

我尝试了一些技巧(比如终止我的应用程序的进程)来强制重新加载,但到目前为止没有任何效果。我最后的手段是告诉用户他/她需要在此生效之前重新启动手机,但这很不礼貌。有没有更好的办法?

【问题讨论】:

    标签: android sony sony-smartwatch


    【解决方案1】:

    解决方案不是尝试在运行时更改您对supportsLowPowerMode() 的响应,而是启动和停止您的扩展程序。

    基本上,如果您的扩展程序永远支持 LPM,那么它应该在 supportsLowPowerMode() 中返回 true 的值。如果扩展的 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 将使其在后台保持运行(但暂停)。这意味着,当用户“唤醒”SW2 时,您的应用程序将立即重新出现在屏幕上。调用stopRequest()(如我上面的代码示例)会破坏这种行为,要求用户在唤醒 SW2 后重新打开您的应用程序。我没有找到任何解决方法;需要的是 pauseRequest(),但 API 没有。

    【讨论】:

      【解决方案2】:

      据我所知,没有办法在运行时更改它。让我与我的团队再次核对一下,以防万一有我不知道的方法。

      【讨论】:

      • 嗯。我以为我昨天对此发表了评论,但现在它消失了。您或团队的后续问题:让 SW2 重新加载 supportLowPowerMode() 的返回值的推荐方法是什么?重启手机会触发这种情况吗?谢谢!
      • 确认一旦扩展设置支持低功耗模式,如果不重新启动扩展,就无法在运行时更改它。不过,您不必重新启动手机,只需退出扩展程序并重新启动即可。不幸的是,退出然后重新启动是目前唯一的解决方案。
      • “退出扩展”是什么意思?我已经尝试了从 stopRequest() 调用到在 Android 系统级别终止我的进程的所有方法,但没有任何方法可以可靠地工作。就好像这个值已经被缓存在主机端了,只要重新启动就不会刷新那个缓存。
      • 对不起,我误解了我们团队中某人的回复。注册类中的方法仅在第一次运行扩展时由 SmartConnect 调用一次。之后,这些值会缓存在 SmartConnect 中,就像您注意到的那样。清除缓存的唯一方法是重启手机或重新安装扩展程序。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多