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