0

我是 android 开发的新手,所以我想知道天气有一个实现 observable 的模型是好的做法,或者会发生这种情况。

就我而言,我的模型不是数据库模型,而是服务器的状态。我有以下课程

  • MainActivity - 主要内容
  • FragmentInfo - 包含文本框的片段视图
  • ModelServerStatus - 一个简单的类,它包含一个布尔变量和一些有用的函数来设置/获取变量。
  • ThreadCheckServerStatus - 通过 UDP 连接到服务器并进行写入/读取的线程。该线程知道ModelServerStatus并将ModelServerStatus通过使用 setStatus 进行更新。该线程始终在运行并休眠 5 秒。

我是否应该ObservableModelServerStatus每次ModelServerStatus.setStatus(true/false)运行时扩展并调用通知。这样MainActivity就可以Observer更新了FragmentInfo.textView

一个非常基本的ModelServerStatus.setStatus()实现

public void setStatus(boolean newStatus)
{
    // See if the value of the server has changed
    if (hasStatusChanged(newStatus))
    {
         //Observer Notify
         setChanged();
         notifyObserver();
    }
}

我在这背后的想法:

Model 会通知 Controller 更新视图

或者

ModelServerStatus 会通知 MainActivity 更新 FragmentInfo

我也想过

控制器将检查模型的更新,并在需要时更新视图。

但这听起来不对。

真正的问题是,这个任务的最佳实施是什么!

想法?谢谢你的帮助

4

1 回答 1

1

我想在这种情况下我会做的是在后台运行一个服务。这将保持服务器的状态。将其初始化为假。您连接到服务器,成功后将其设置为 true。根据需要轮询它,当服务器不再可用时将其设置为 false。

当状态从 true 变为 false 时,服务应该触发广播,反之亦然。

在 Activity(或 Fragment)中,您可以注册一个BroadcastReceiver来监听 onResume() 中的广播。在 onPause() 中取消注册BroadcastReceiver 。

每当您的服务检测到更改时,您的 UI 组件都会收到广播。

警告

进行网络投票会让你的用户非常非常暴躁。大多数用户会因为此类行为而卸载您的应用程序。

于 2013-06-18T17:26:46.330 回答