情况:
当退出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中的数据,以便稍后返回应用程序时不会有旧数据。
答案 0 :(得分:2)
您的代码目前正在使用静态变量。静态变量附加到ClassLoader
而不是类的实际实例。这意味着您实际上并不需要有效的生活实例来执行上述操作。只需使用myStringCollection != null
之类的支票即可确保您的变量已初始化并且您应该没问题。
请注意,请说明您是否确实想要访问非静态变量。