在我的应用程序中,当onCreate发生时,我调用另一个类的静态方法。例如。 ClassName.method()。第二个类包含一个静态块,它也在调用方法时执行。这正是我想要发生的事情。
然而,当我按下后退按钮并返回应用程序时,再次调用onCreate(返回导致onDestroy执行),并调用其他方法,但静态块不是。当我手动关闭应用程序以在后台运行(滑动技术)然后重新打开它时,情况并非如此。在那种特殊情况下,会调用静态块。
为什么在应用程序在onBackPressed之后重新启动时,类的静态块没有被调用?
谢谢。
更新
在我看来,即使在onDestroy按下后退时,类也不会从内存中删除。我的印象是,当再次调用onCreate时,所有内容都会重新初始化。然而,情况似乎并非如此。有没有办法在调用onDestroy时删除类?
答案 0 :(得分:0)
据我了解你的问题,静态块没有被执行,因为类已经加载了。
class StaticTest {
static {
// This will be executed once only. When the class is loaded and initialized.
}
static String s = "Exactly like this actually";
}
但最好还是看一下代码的相关部分。
答案 1 :(得分:0)
在类的初始化期间调用类中的静态块。因为,类只加载(并初始化)一次,所以其中的静态块只被调用一次。
可能你根本不应该使用静态块。只需将代码放在静态方法中,并随时调用它。
答案 2 :(得分:0)
on backpress simply instantiate the class
or put it in constructor instead of static block