2012-07-12 63 views
2

我正在研究与Arduino交互的Android应用程序。我试图管理多个活动,每个活动都负责控制Arduino板的特定部分。Arduino + Android:如何切换活动

不幸的是,网络上的教程只使用一项活动。所以,我不知道如何继续保持与Arduino的连接,同时导航到新的Activity或正确关闭它,然后在新的Activity上重新打开它。

有什么想法?

回答

0

我没有使用Arduino的与Java之前,但你可能要遵循Singleton模式。使用Singleton模式,可以从多个活动和多个线程访问您用来连接它的任何对象。

使用Singleton只会缓解您的问题。你仍然需要弄清楚如何关闭/重新打开它。

而且,重要的是你知道如何在Activity Lifecycle作品。如果用户接到电话,屏幕关闭,或者屏幕方向改变,则会破坏您的活动并重新创建。你必须处理你将如何保存和恢复你的位置。这很可能意味着您必须关闭/重新打开连接。

+2

这是脆弱。我尝试了这种方法,并在Android卸载整个类以释放内存时被烧毁。服务方法由@ A.H描述。像钟表一样工作。 – 2012-07-12 22:28:36

+0

很高兴知道,谢谢! – Scen 2012-07-13 00:01:20

4

你可以使用一个Service连接到Arduino的,并保持这种连接打开。然后,您的活动可以跟服务,正在启动,停止,切换等

编辑:如何可以做到这一点已经被其他提问/回答处理:

Long running ADK Accessory (Service?)

+0

+1好建议。我正在做一个类似的项目,我可能只是使用这种方法。 – ZnArK 2012-07-13 14:04:01

+0

嗨,谢谢你的回答。这听起来是一个很好的解决方案。但我真的不知道如何处理。 我使用从谷歌DEMOKIT样品(http://developer.android.com/tools/adk/adk.html),但为了得到附件使用连接到像getLastNonConfigurationInstance()的活动功能。这些功能似乎无法在服务上使用。 另外它使用runnable来运行通信循环,我应该在我的服务中使用runnable吗? 你有我可以使用的示例代码吗? 的DemoKitActivity.java的代码可以在这里找到:http://bit.ly/OpNhgy – Ldoppea 2012-07-14 17:18:00

+0

望着挂来源:附件是获取最初从'UsbManager'。除此之外:对不起,我无法帮助ADK。你应该探索一下链接的'Service'文档,然后_then_用_specific_问题来形成一个新的问题。在评论中处理这个问题在这个网站上不受欢迎。你可能会为此查找网站FAQ。 – 2012-07-14 18:22:27