gpt4 book ai didi

android - 适当的 UML 图来模拟 Android 应用程序的线程、网络 Activity 、处理程序等

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:18 28 4
gpt4 key购买 nike

我正在编写一个 Android 应用程序,其中包括:

  • 在 {Activity}.onResume() 执行时生成一个将网络套接字绑定(bind)到端口 42777 的线程,并将传入数据分派(dispatch)给处理程序。除非当前没有 WLAN 适配器与本地(192.168.、10.、172.16-31.*)IP 地址建立连接...然后,它会显示一条错误消息并且什么都不做,直到找到合适的WLAN 连接建立,ConnectivityManager 通知我的监听器。

  • 生成一个线程,该线程从 LinkedBlockingQueue 中获取 Runnable,并将它们提交给单线程 ExecutorService。此时,Runnables 基本上通过 UDP 向 255.255.255.255 广播数据报。

  • 当 {Activity}.onPause() 执行时,端口 42777 上的套接字被关闭并释放,LinkedBlockingQueue 被清除(),并且 ExecutorService(以及为其提供 Runnable 的线程)被中断并且杀了。并且希望绑定(bind)到套接字的端口在下次 {Activity}.onResume() 触发并尝试重新打开套接字之前被释放......否则,我将不得不更加纠结老鼠的巢穴,并将逻辑添加到锤子中离开网络堆栈,直到端口最终被释放。

什么样的 UML 图适合记录这样的事情,这样我就可以在相当清楚地了解类之间如何交互的情况下进行研究?多年来我一直在使用类图,但记录间接生成线程以响应处理程序事件生成线程的事件链对我来说是(到目前为止)未探索的领域。

最佳答案

您可以混合使用序列图和状态图。

  • 序列图可以显示功能在特定场景中的执行方式。例如。对于您的第一个示例,您在左侧有一个 main 实例,它实例化了一个 thread (无论它是什么有意义的名称)。这将首先调用 bind,监听传入数据并将数据分派(dispatch)给 Handler。等等。您将为不同的场景创建此类 SD,在这些场景中您可能认为图形表示会为模型的读者增加值(value)。最终你会得到在更高的抽象层次上解释行为的 Activity 图。
  • 状态图对于传达机器的“如果-这个-那么-那个”状态很有用。因此 thread 进入 Connect 状态,直到它获得端口,然后进入 Listening 状态,该状态转移到 Dispatch

请注意,这两个图不是多余的。状态机几乎可以直接转换为代码。还有一些工具可以模拟状态机,这对复杂的机器最有帮助。序列图仅显示了场景如何工作的示例。你最终用它来做某种“静态模拟”。在大多数情况下,您需要一组不同的序列图来传达想法。

正如@Ister 指出的那样,您将需要适当的类图来显示类模型的静态结构。这是必不可少的,通常是模型的“露点”。我原以为这已经存在了:-)

关于android - 适当的 UML 图来模拟 Android 应用程序的线程、网络 Activity 、处理程序等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com