我的应用程序中有不同的类文件。我有 5 个课程,其中 2 个是活动,1 个是正在运行的服务。其他2个只是类。这两个类中变量的生命周期是多少。我知道一个活动可以被操作系统杀死,所以当活动被杀死时,我将无法使用服务中活动的变量。我可以在应用程序生命周期内的任何时候使用其他 2 个类文件中的变量,它们既不是活动也不是服务?
4 回答
您可以使用这些变量,如果您将变量设为静态,那么在活动或服务中所做的值更改将持续存在。否则你可以在活动或服务类中创建这些类变量的对象(如果你想要每个活动或服务的单独变量实例)。
如果您想在应用程序的整个生命周期中引用一些对象,我建议您将它们存储在应用程序上下文中。您可以通过以下方法之一获取对应用程序上下文的引用:
在清单中,您定义要使用的自定义应用程序类:选中此
然后只需在 Application 的 onCreate 方法中创建您想要的对象,并提供 getter(s) 供其他 Android 组件使用。
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.
只要另一个类或活动或服务保持对它的引用,这些类就在那里。如果您的活动有一个类的引用,那么当活动被销毁时,该类就会消失。服务也一样。不幸的是,在 Android 中没有办法将 pojo(你称之为“普通类”)的引用从一个活动传递到另一个活动,所以你不能轻易地保持这些类的活动。
我使用 RoboGuice,通过制作 pojo 的 Injectable Roboguice 类,您可以从活动和服务中引用相同的对象,如果它们是单例,只要您的应用程序正在运行,它们就会保持活动状态。