1

我的应用程序中有不同的类文件。我有 5 个课程,其中 2 个是活动,1 个是正在运行的服务。其他2个只是类。这两个类中变量的生命周期是多少。我知道一个活动可以被操作系统杀死,所以当活动被杀死时,我将无法使用服务中活动的变量。我可以在应用程序生命周期内的任何时候使用其他 2 个类文件中的变量,它们既不是活动也不是服务?

4

4 回答 4

2

您可以使用这些变量,如果您将变量设为静态,那么在活动或服务中所做的值更改将持续存在。否则你可以在活动或服务类中创建这些类变量的对象(如果你想要每个活动或服务的单独变量实例)。

于 2012-06-14T05:43:49.427 回答
1

如果您想在应用程序的整个生命周期中引用一些对象,我建议您将它们存储在应用程序上下文中。您可以通过以下方法之一获取对应用程序上下文的引用:

上下文#getApplicationContext()

活动#getApplication()

在清单中,您定义要使用的自定义应用程序类:选中

然后只需在 Application 的 onCreate 方法中创建您想要的对象,并提供 getter(s) 供其他 Android 组件使用。

于 2012-06-14T06:11:40.240 回答
0
The other 2 are just classes. What is the lifetime of the variables in these 2 classes.

这取决于变量是否是实例变量的静态

if static :当类加载第一次时,它将进入滚动状态。

if instance :这将取决于您在何处创建该 claas 的实例以及该实例的范围是什么

so i wont be able to use the variables of the activities in the service when the activity is killed.

是的,当活动被杀死时,该变量的活动也会被清除。

Can I use the variables in the other 2 class files anytime during the lifetime of the application, which are neither activities nor services?

您可以通过以下方式使用应用程序的生命周期

  1- make them static 

  2- or if they are not static declare them in application file of you project.
于 2012-06-14T05:35:22.753 回答
0

只要另一个类或活动或服务保持对它的引用,这些类就在那里。如果您的活动有一个类的引用,那么当活动被销毁时,该类就会消失。服务也一样。不幸的是,在 Android 中没有办法将 pojo(你称之为“普通类”)的引用从一个活动传递到另一个活动,所以你不能轻易地保持这些类的活动。

我使用 RoboGuice,通过制作 pojo 的 Injectable Roboguice 类,您可以从活动和服务中引用相同的对象,如果它们是单例,只要您的应用程序正在运行,它们就会保持活动状态。

于 2012-06-14T05:42:02.563 回答