如何知道当前是否有活动实例?

时间:2011-12-19 22:22:18

标签: java android android-activity nullpointerexception

情况:
当退出Android应用程序的主要活动时,我希望在活动的实例上调用一个方法,使它们在数组中清晰显示数据(,以便在返回应用程序时尚未填充数组)。

在MainActivity.java中

// ...
@Override
public void onDestroy() {       
   super.onDestroy();
   // call method to clear an array list of its data
   // NullPointerException here if OtherActivity has no current living instance
   OtherActivity.clearAllData();        
}

在OtherActivity.java中

// ...
private static ArrayList <String> myStringCollection;
// ...
public static void clearAllData(){
   if(myStringCollection.size() > 0){
     myStringCollection.clear();
     Log.d(TAG, "clearing data in OtherActivity");
   }

}

问题:
我们怎样才能知道OtherActivity是否有一个当前的实例,以便我们可以安全地调用OtherActivity.clearAllData()?

代码尝试执行的操作:
退出应用程序并返回之后,一些ArrayLists仍然有旧数据,因此新数据(重复)堆叠在顶部。此代码尝试清除主活动的onDestroy()上的ArrayLists中的数据,以便稍后返回应用程序时不会有旧数据。

1 个答案:

答案 0 :(得分:2)

您的代码目前正在使用静态变量。静态变量附加到ClassLoader而不是类的实际实例。这意味着您实际上并不需要有效的生活实例来执行上述操作。只需使用myStringCollection != null之类的支票即可确保您的变量已初始化并且您应该没问题。

请注意,请说明您是否确实想要访问非静态变量。