如何在 2020 年将服务对象传递给 activity
How to pass a service-object to an activity in 2020
我有:
- 一个
MainActivity
- 一个
OtherActivity
- a
DatabaseService
,它在 MainActivity 中实例化,它包含 Sqliteconnection 和功能,如 List<data> getData()
如何将 DatabaseService 传递给我的 OtherActivity?
到目前为止,我的 DatabaseService 是一个 Singleton,我从 OtherActivity 中引用了那个 Singleton,但我不喜欢那个解决方案。
我也不能用 putExtra 传递它,因为对象太复杂而无法序列化。
应该有一种更简单的方法来将服务注入或传递给 activity。
有人对我有什么提示吗?
您需要做的是将您的活动绑定到服务(在您的情况下:DatabaseService)。强烈建议您遵循 [本开发指南] https://developer.android.com/guide/components/bound-services 并选择创建绑定服务的最简单方法:扩展活页夹 class。简而言之,您需要做的是:
- 按照示例 LocalService 实施您的服务
- AndroidManifest.xml 中的配置:
<service android:name=".YourNewService" android:enabled="true"/>
- 对于需要与服务交互的活动,只需像指南的 BindingActivity 一样实现它们。 (不用担心服务实例化、单例等)
- 请注意,您始终可以创建一个处理所有绑定核心的基本 BindingActivity class,并让其他活动扩展基本绑定 class。
编码愉快!
我有:
- 一个
MainActivity
- 一个
OtherActivity
- a
DatabaseService
,它在 MainActivity 中实例化,它包含 Sqliteconnection 和功能,如List<data> getData()
如何将 DatabaseService 传递给我的 OtherActivity?
到目前为止,我的 DatabaseService 是一个 Singleton,我从 OtherActivity 中引用了那个 Singleton,但我不喜欢那个解决方案。 我也不能用 putExtra 传递它,因为对象太复杂而无法序列化。
应该有一种更简单的方法来将服务注入或传递给 activity。 有人对我有什么提示吗?
您需要做的是将您的活动绑定到服务(在您的情况下:DatabaseService)。强烈建议您遵循 [本开发指南] https://developer.android.com/guide/components/bound-services 并选择创建绑定服务的最简单方法:扩展活页夹 class。简而言之,您需要做的是:
- 按照示例 LocalService 实施您的服务
- AndroidManifest.xml 中的配置:
<service android:name=".YourNewService" android:enabled="true"/>
- 对于需要与服务交互的活动,只需像指南的 BindingActivity 一样实现它们。 (不用担心服务实例化、单例等)
- 请注意,您始终可以创建一个处理所有绑定核心的基本 BindingActivity class,并让其他活动扩展基本绑定 class。
编码愉快!