gpt4 book ai didi

java - 如何知道当前是否存在 Activity 实例?

转载 作者:行者123 更新时间:2023-12-02 08:03:19 24 4
gpt4 key购买 nike

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

在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 是否有当前的 Activity 实例,以便我们可以安全地调用 OtherActivity.clearAllData() ?

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

最佳答案

您的代码当前正在使用静态变量。静态变量附加到ClassLoader而不是类的实际实例。这意味着您实际上不需要有效的 Activity 实例来执行上面所做的操作。只需使用像 myStringCollection != null 这样的检查来保证您的变量已初始化,您应该没问题。

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

关于java - 如何知道当前是否存在 Activity 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8568375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com