Android 活动和服务都引用同一个对象

Android 活动和服务都引用同一个对象,android,android-service,Android,Android Service,如果我有一个启动后台服务的活动,那么当该活动被销毁时,该服务仍然存在。我需要服务和活动都是一个引用同一个对象的对象,因为这个对象的构建成本很高,并且只要应用程序处于打开状态,它就会一直存在。那我怎样才能做到呢?全局静态变量?简而言之,您不能。服务与活动有着本质的区别。每一个都是一个独立的生命周期,使它们成为暂时的。如果您真的需要在应用程序中保留某种类型的静态,您可以非常小心地创建一个单例类,或者可能将其嵌入从应用程序派生的自定义类中。那么您如何解决这个常见问题:用户单击对对象进行更新的按钮。服务

如果我有一个启动后台服务的活动,那么当该活动被销毁时,该服务仍然存在。我需要服务和活动都是一个引用同一个对象的对象,因为这个对象的构建成本很高,并且只要应用程序处于打开状态,它就会一直存在。那我怎样才能做到呢?全局静态变量?

简而言之,您不能。服务与活动有着本质的区别。每一个都是一个独立的生命周期,使它们成为暂时的。如果您真的需要在应用程序中保留某种类型的静态,您可以非常小心地创建一个单例类,或者可能将其嵌入从应用程序派生的自定义类中。

那么您如何解决这个常见问题:用户单击对对象进行更新的按钮。服务在后台运行,并对同一对象进行更新。我猜是Singleton,但我很惊讶,除了共享优先权之外,没有一种方便的方法可以让服务和活动共享数据。活动可以在创建时绑定到服务,我假设即使在活动被销毁和重新创建之后,我也可以将活动绑定到服务,对吗?是的,再次创建活动时,可以使用绑定。如果该服务已在运行,则它将与其连接。SharedReference适用于配置类型项和数据库。但是,如果您选择数据库路径,那么最好将其包装在ContentProvider中。这实际上完全取决于你在两人之间分享什么。