如何在2020年将服务对象传递给活动

时间:2020-08-08 14:44:07

标签: android android-activity

我有:

  • 一个MainActivity
  • 一个OtherActivity
  • 一个DatabaseService,它在MainActivity中实例化,并包含Sqliteconnection和类似List<data> getData()的函数

如何将DatabaseService传递给OtherActivity?

到目前为止,我的DatabaseService是Singleton,我从OtherActivity引用了Singleton,但是我不喜欢该解决方案。 我也不能通过putExtra传递它,因为对象太复杂而无法序列化。

应该有更简单的方法来将Service注入或传递给活动。 有人对我有什么提示吗?

1 个答案:

答案 0 :(得分:1)

您需要做的是将活动绑定到服务(在您的情况下为DatabaseService)。强烈建议您遵循[此开发指南] https://developer.android.com/guide/components/bound-services并选择创建绑定服务的最简单方法:扩展绑定程序类。简而言之,您需要做的事情:

  1. 按照示例LocalService实施服务
  2. AndroidManifest.xml中的
  3. config: <service android:name=".YourNewService" android:enabled="true"/>
  4. 对于活动需要与服务进行交互的情况,只需实现类似于指南BindingActivity的活动即可。 (不必担心服务实例化,单例操作等)
  5. 请注意,您始终可以创建一个处理所有绑定核心的BindingActivity基类,并让其他活动扩展该基绑定类。

祝您编程愉快!