我的程序由一个远程服务组成,该服务在后台每 1 小时从互联网下载数据并更新数据库。然后,该服务将提醒用户预定义的数据。
该活动用于设置警报设置和其他一些参数。该服务应该能够在没有活动的情况下自行工作。
我想知道将sql数据库放在哪里?
假设我在活动中创建它,我可以从服务中访问它吗?然后我应该构建一个 AIDL 连接还是我可以通过直接读取它来访问数据库(即使活动不工作)?
建议将不胜感激。
Ps:我正在寻找一些简单的东西,因为我仍然是 android 的初学者;)
如果您在与 Activity 相同的进程中拥有服务,那么您在哪里创建它以及您希望在哪里访问它都无关紧要。仅当您在单独的进程中运行服务时才需要 AIDL。
正如@black crow 所提到的,如果您在同一进程中拥有 Activity 和 Service,那么在哪里创建数据库并不重要。如果它们是单独的进程,那么在我看来,最好在服务中创建数据库,并创建从 Activity 访问数据库数据的方法(例如,getAllData)。因此,与数据库的所有交互都将在服务中。如果您的活动和服务在不同的进程中,您还可以创建 ContentProvider,因此,您的活动和服务将在逻辑上划分(活动只会从 ContentProvider 读取数据,而服务将在那里推送数据)。在我看来,这种方法将满足您的所有需求。