2014-05-15 93 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