活动onPause并没有回到onResume

时间:2014-04-29 16:39:18

标签: google-glass google-gdk

在我的Google Glass应用中,我使用CardScrollView进行活动。

与主时间轴一样,十秒后屏幕关闭,活动转到onPause()。

然而,当我点击谷歌眼镜时,我没有看到我的活动,我看到了家庭卡(时钟),如果我再次开始我的活动(用#34;好的,玻璃+我的语音命令),活动再次开始(它已创建)。我认为之前的活动应该调用onResume(),但这并没有发生。

所以......任何想法我怎么能回到onResume那个活动?

非常感谢!

3 个答案:

答案 0 :(得分:1)

我没有看到同样的行为。

如果我创建一个简单的应用程序,只是在文本视图中显示活动生命周期事件,或者由启动器意图或语音触发器启动,我看到:

的onCreate 在onStart 的onResume

当app启动时

然后,如果我向下滑动或让它在十秒后超时,然后通过ok玻璃屏幕上的语音命令重新启动它,我看到

onPause(这发生得比较早,但我现在看到了) onStop(同样,发生在前面) onRestart 在onStart 的onResume

因此onResume被调用。

所以我认为你的问题的答案是onResume会在应用程序进入休眠状态时被调用,并在不久之后被调用。如果你看到的不同,我唯一的猜测就是它会无声地崩溃,或者可能使用太多资源而玻璃正在杀死它。您可以通过在代码中添加一些战略日志语句来了解更多信息。如果它在暂停或停止时崩溃,那么修复崩溃将解决您的问题。如果您分享您的活动代码,我可以尝试提供更多帮助。

为用户提供更长时间运行体验控制的更复杂的解决方案是设置带有服务的实时卡。这里的文档有点令人困惑:https://developers.google.com/glass/develop/gdk/live-cards因此您可以使用下面的代码作为示例。

当您运行此实时卡时,您会发现屏幕在十秒钟后没有睡眠,如果您向下滑动睡眠并点击玻璃醒来,您将立即回到现场卡。也许这是你正在寻找的经验。

https://github.com/mscheel/GoogleGlass-XE16-LowFrequencyLiveCardBasketballScore

答案 1 :(得分:0)

可能是你的Activity正在获取GCd(垃圾收集)以便在暂停后释放内存。您可以通过输出到登录onDestroy来调查,如果您看到日志消息,您知道它已被破坏,那么它会很有意义地重新创建它。

答案 2 :(得分:0)

我读过当你使用沉浸式模式时,当屏幕关闭时,如果你点击并唤醒屏幕,你会继续看到你的活动。那么,为此,您需要在清单中的活动中添加android:immersive="true"

当屏幕关闭时,Android会调用onPause()onStop。当您点按时,Android会调用onRestart()onStart()