我有运行并执行其工作的活动,然后运行服务(活动完成时无法完成)。 一切都好。 我的问题:服务使用在活动类中声明的值作为静态公共,当活动完成并且服务继续工作并使用它们时,这些值是否会重置? 当活动再次开始时,这些值会发生什么。
答案 0 :(得分:1)
根据Android document
如何在单个应用程序中的活动/服务之间传递数据?
公共静态字段/方法
跨活动/服务访问数据的另一种方法是使用公共静态字段和/或方法。您可以从应用程序中的任何其他类访问这些静态字段。要共享对象,创建对象的活动会设置一个静态字段以指向此对象,而任何其他想要使用此对象的活动只会访问此静态字段。
我认为只要未调用活动的onDestroy(),static就会保留在内存中。一旦被调用,静态成员将从内存中删除。
如果您需要保留数据,则可以使用sharedprefrence。
活动/服务 - 继承自ContextWrapper,后者实现相同的API,但将其所有方法调用代理到隐藏的内部Context实例,也称为其基本上下文。每当框架创建一个新的Activity或Service实例时,它还会创建一个新的ContextImpl实例来完成任一组件将要包装的所有繁重工作。每个活动或服务及其相应的基本上下文都是每个实例的唯一。