我是Android开发的新手,所以我想知道天气有一个模型实现一个可观察的是好的做法,或者this会发生。
在我的情况下,我的模型不是数据库模型,而是服务器的状态。我有以下课程
ModelServerStatus
并将使用setStatus更新ModelServerStatus
。这个线程总是在运行并且睡了5秒钟。我应该在Observable
上展开ModelServerStatus
并在每次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();
}
}
我背后的想法:
模型将通知Controller更新视图
或
ModelServerStatus将通知MainActivity更新FragmentInfo
我也考虑过
Controller将检查Model以获取更新,并在需要时更新View。
但这听起来不对。
真正的问题是,这项任务的最佳实施是什么!
思考?谢谢你的帮助
答案 0 :(得分:1)
我认为在这种情况下我会做的是在后台运行Service。这将保持服务器的状态。将其初始化为false。连接到服务器,成功时将其设置为true。根据需要进行轮询,在服务器不再可用时将其设置为false。
当状态从true变为false时,Service应触发broadcast,反之亦然。
在活动(或片段)中,您可以register一个BroadcastReceiver来监听onResume()中的broadcast。取消注册onPause()中的BroadcastReceiver。
每当您的服务检测到更改时,您的UI组件都将进行广播。
警告强>
进行网络投票会让您的用户非常非常脾气暴躁。大多数用户会因此类行为而卸载您的应用程序。