【问题标题】:Android - Modular app designAndroid - 模块化应用程序设计
【发布时间】:2015-03-10 19:57:08
【问题描述】:

我目前正在为我的计算项目开发一个应用程序。简单来说,它通过 SSH 会话从计算机收集信息并显示 CPU 使用率等。

我一直想在应用程序本身中添加多个连接的功能,但是我希望设置它,以便用户可以随时添加/删除连接并在它们之间切换。我想设置它,以便所有连接都可以一次处于活动状态(可能最多 8 个),以便可以进行后台监控。

我不确定如何让我的应用程序像这样“模块化”。任何想法都会很棒! :D 我已经设置了 1 个连接,现在可以正常工作,拥有多个连接会增加我的应用程序的更多用途。

如果您想查看我的代码,我在 GitHub 上有一份副本。这是它的旧版本,但代码基本相同。 My ssh class

谢谢大家!

【问题讨论】:

  • 我不确定这是“不清楚你在问什么”还是“太宽泛”,但肯定是其中之一。

标签: java android linux ssh modular


【解决方案1】:

排序版本:使用队列连接线程。

例如,您有 9 个输入流。 8 个来自 SSH 源,1 个来自您的用户。常见的方法是使用线程。 (可能还有另一种使用 java 通道的方法,java.nio.channels,它有回调)。每个流都需要独立于其他流的输入和输出。因此,您需要某种消息队列进出每个流。这样,即使流被阻止,应用程序的其余部分也可以愉快地进行。

与大多数 UI 框架一样,Android UI 是“单线程”的。当 UI 框架说它们是“单线程”时,它们的意思是一个线程用于您的应用程序中的所有 UI 交互。因此,您需要一种在执行 SSH 的线程和执行 UI 的线程之间传递消息的方法。在 Android 中,您可以将消息发布到 UI 线程。另一种方法是在应用程序内进行本地广播,并在需要的地方设置监听器。另一种方法是使用像 Otto 这样的消息错误框架,它是您应用程序中的一个全局空间,每个活动或片段等都在其中注册自己以获取消息。

在您的情况下,现在,我只需启动一些 Java 线程,然后调用“post”将消息发布回某个视图。

典型的 UI“线程”是一些循环,它获取 UI 输入并调用程序代码。在 Android 中,它被称为“looper”。这是一篇关于一种方式的文章: https://developer.android.com/training/multiple-threads/communicate-ui.html 这里有一篇更一般的讨论文章: http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-1-of-5/

您可能还只想使用“runOnUIThread”来运行任何与 UI 混淆的代码。但是,本地广播也很好用。

按照这一思路,队列是与可笑的旧技术(如大型机)集成的经典方法,大型机执行夜间批处理等愚蠢的设计,而不是立即处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多