2014-01-29 34 views
0

我有运行并执行其工作的活动,然后运行一项服务(活动结束时不会完成)。 一切正常。 我的问题:该服务使用在活动类中声明为静态公共的值,当活动完成并且服务继续工作并使用它们时,这些值是否重置? 当活动再次开始时,这些值会发生什么。服务活动关系

回答

1

根据Android的document

我如何通过一个单一的应用程序/服务活动之间的数据?

公共静态字段/方法

的另一种方法,使整个活动/服务数据访问是使用公共静态字段和/或方法。您可以从应用程序中的任何其他类访问这些静态字段。为了共享一个对象,创建对象的活动将一个静态字段设置为指向该对象,并且任何其他想要使用此对象的活动都将访问此静态字段。

只要没有调用activity的onDestroy(),我认为静态会留在内存中。一旦被调用,静态成员将从内存中移除。

如果你需要保存你的数据,那么你可以使用sharedprefrences。

活动/服务 - 从ContextWrapper继承其实现相同的API,但代理其所有方法调用到隐藏内部Context实例,也被称为其基本上下文。每当框架创建一个新的Activity或Service实例时,它还会创建一个新的ContextImpl实例来完成任一组件将包装的繁重工作。每个活动或服务及其相应的基本上下文都是唯一的每个实例。

+0

可以说我正在使用我的服务中的主要活动上下文,并且我将Context成员声明为静态,当活动结束时,服务是否获得空上下文? – EsmaeelQash

+0

服务在应用程序组件(如活动)通过调用startService()启动时“启动”。一旦开始,服务可以无限期地在后台运行,即使启动它的组件被销毁。当您的活动停止时,活动对象将保持驻留在内存中,并在活动恢复时被调用。您不需要重新初始化任何导致恢复状态的回调方法期间创建的组件。服务不会得到空上下文。活动仍在进行中。 –

+0

我知道它很混乱。检查这个链接,它告诉什么是上下文? http://www.doubleencore.com/2013/06/context/ –