2014-05-15 94 views
0

我注意到,当我试图从一个活动切换到另一个玻璃的应用程序,我已经建立,菜单似乎搞砸了,我得到了与我的LiveCard中显示的幽灵活动,不能被关闭。谷歌玻璃导航处理

我回顾了一些例子(例如指南针),但我们没有任何高级的导航示例。你能否帮助我定义迄今为止在商业应用程序中建立导航的协议?这将有助于解决我的问题,因为我意识到我正在创建多个看似不正确的LiveCards。

活动:我应该创建多个活动还是应该回收相同的活动交换UI?如果有多个活动,在加载新活动时销毁先前活动的服务是否是一个好主意?

服务:从广义上说,所有活动都应该使用单个服务来处理导航(活动之间的切换)?如果只有一个服务,它是否应该停止/重新启动?如何在使用服务的活动之间切换,因为我们没有从活动或活页夹引用服务?还是应该为每个活动提供服务来处理导航?

LiveCards:我相信只有一个livecard应该创建,那么如何在活动之间切换而不需要创建一个新活动卡?对于任何可以使用此LiveCard的服务而言,是否保留全局参考的惯例?

我问了很多问题,我可能会离开一些基地,但我可以使用任何指导!我无法在google上找到一个很好的指导,以便定义预期的行为。我作为一名Android开发人员来自3年,所以请随时在您的答案中复杂一些!多谢你们。

编辑: 在这种情况下帮助,这里是我使用去从一个活动到下一个代码:

 mLiveCard = new LiveCard(this, GlobalConstants.LIVE_CARD_TAG_ACTIVITY2); 
     mRenderer = new MainRenderer(this); 

     mLiveCard.setDirectRenderingEnabled(true).getSurfaceHolder() 
       .addCallback(mRenderer); 

     // Display the options menu when the live card is tapped. 
     Intent menuIntent = new Intent(this, Activity2.class); 
     menuIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
       | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     mLiveCard.setAction(PendingIntent.getActivity(this, 0, menuIntent, 
       0)); 
     mLiveCard.attach(this); 
     mLiveCard.publish(PublishMode.REVEAL); 

回答

1

我们大概都是很新的GDK所以我肯定不会更多的是专家,然后你。 我会与你分享我的经验到目前为止:

活动: 我只用这些,当我想创建Immersions。我认为决定是否想要进行多项或一项活动的唯一原因应该是可读性。如果你需要沉浸感,那么你可以直接开始你的活动,而不是使用服务。

服务: 我发现有一个中心服务很有用。特别是在那些拥有跨越多个活动的生命周期的完整对象的项目中。如果你的导航取决于例如一个连接也可以让服务管理导航,例如开始新的活动。活动可以通过任何适当的方法进行交互并向服务提供结果,例如,意图,广播,活页夹,单身... 我通常会通过列表,并采取第一个符合要求。如果我能做我想做的事情,那么这通常是我的第一选择。

LiveCards: 中央服务也将是一个管理您希望在其他活动中共享的livecard的好地方。同样,将活动卡界面暴露给活动的方法取决于您想要的接口类型(抽象还是直接)。

让我知道你在想什么。

+0

您的意见已经非常有帮助。我知道有不同类型的应用程序结构与LiveCards分开,但我不知道它叫做什么(Immersions)。这肯定会解决我遇到的许多导航问题。本指南特别有用:https://developers.google.com/glass/develop/gdk/immersions 感谢您的反馈,这将有助于指导应用程序结构向前发展。谢谢你的时间。 – azdragon2

+0

再次感谢,沉浸感非常棒!我的应用程序现在已经按照预期工作,并且是真棒。迫不及待地在一两个月内发布存储。 – azdragon2