2010-09-23 29 views
0

我有点新的程序,功能mvc架构,我想正确的想法前面...如何在android上获取mvc?

我有这个(android)应用程序,其中一个线程(从UI线程分开)计算一些数据。完成后,结果将写入对象的成员。现在:我如何获得UI线程以“实现”已经有更新(即,UI线程必须重做屏幕输出)。

最明显的方法 - 在UI线程中运行无限循环,检查每个循环中是否存在更新 - 是非常蹩脚的。那么我该如何做到“正确”?

  • 我应该使用一个处理程序,每次有新数据可用时都由计算线程调用它。这个处理程序会触发一个重绘UI的函数。

  • 我应该使用wait()和notify()让UI线程知道有新数据可用的事实吗?

我在这里有点失落。虽然我知道这些概念的基本知识,我不知道哪一个是“最好”的一个用在这里...

编辑:澄清:

我有一个类A(它是一个机器人活动)和一个由A实例化的类B.这个类B有一个成员变量X并且运行一个线程,它计算X的值。当线程完成时,它发送一个消息(带有计算值)给一个处理程序B.此处理程序现在设置X. 的值:由于B不存储A的引用,因此我如何“通知”A X的值已发生变化?我是否发送另一个被A类中的处理程序“捕获”的消息对象?

回答

1

使用处理程序,并让后台线程在更新可用时通知UI线程。

不要用循环或等待来阻止UI线程。这将使您的用户界面无响应,并让你的应用程序死亡。

1

...你的问题似乎是关于线程管理及其设计比关于mvc更多。

然后你不应该使用类线程或接口runnable而是AsyncTask。它使得更新UI和设计业务逻辑变得更容易。 AsyncTask的目标是为您管理线程管理。

看看android开发者博客。 Painless threading

相关问题