我正在开发一款安卓应用,它可以进行人类活动识别。
基本上是这样工作的 - 服务不断读取加速器数据并将识别出的活动(例如步行、奔跑)存储在数据库中。用户可以在一个 ListView
中查看所有识别出的活动(访问数据库)。数据库中的每个用户表都有一个pa_goal(身体活动目标)字段,服务从数据库中读取并进行一些检查。
当然,用户可以从活动中更改此目标。由于我将实现MVP架构模式。
我不确定要将服务放在哪里?它肯定不是视图。有什么建议吗?
我正在开发一款安卓应用,它可以进行人类活动识别。
基本上是这样工作的 - 服务不断读取加速器数据并将识别出的活动(例如步行、奔跑)存储在数据库中。用户可以在一个 ListView
中查看所有识别出的活动(访问数据库)。数据库中的每个用户表都有一个pa_goal(身体活动目标)字段,服务从数据库中读取并进行一些检查。
当然,用户可以从活动中更改此目标。由于我将实现MVP架构模式。
我不确定要将服务放在哪里?它肯定不是视图。有什么建议吗?
我处于同样的情况。最终,我决定做类似于以下的事情:
活动或片段超出了范围,它们不知道任何关于MVP的内容,但是我将使用事件总线(如Otto)发送信号/事件,所以:
我的一些Presenter类扩展了某种Presenter,不知道Android Context,但它们将具有一个MvpView接口,仅包括onAttachPresenter和onDetachPresenter。
扩展服务的类将具有一个Presenter属性,并实现一些MvpView接口,例如onSucess、onError、onStart、onComplete或类似的事件,以及Otto的相同事件(onSucessEvent、onErrorEvent、onStartEvent、onCompleteEvent)。
因此,当我需要做某事时,Activity或Fragment将启动服务,服务将“启动”或与Presenter通信,当Presenter成功完成后,将调用mvpView.onSuccess()并在SQLite中存储信息(也许是storeIO),最后服务将调用Otto并传递信号(其中没有任何数据),可能是onComplete。最终,UI(可能是片段)将捕获信号并从SQLite数据库中检索所有信息。
当onSuccess发生时,UI将显示最新和最好的数据。但是当onError发生时,至少会显示一些信息(如果您想要的话),告诉用户“出现了问题,但至少您可以看到一些东西”,无论是onSuccess还是onError都会在完成后调用onComplete。