众所周知,在关闭申请后,android并没有卸载* .so。我通过添加"退出(0)"找到了解决方案。最后,这解决了问题,但我想确切地知道一切都没问题。
解决问题后代码正常工作:
static int value = 0;
// In android_main
LOGI("value = %d", value); // always print 0, but not 1 after second run of
// application as it was without "exit(0)" at the end
value = 1;
我想在课堂上测试:
class A {
A() {
LOGI("Constructor");
}
~A() {
LOGI("Destructor");
}
statis A a;
以这种方式仅打印"构造函数"。 也许是因为析构函数在LOGI不会为将要关闭的应用程序工作更多时调用? 问题:为什么析构函数中的LOGI不起作用?根据顶级析构函数的第一个例子,真正调用。
答案 0 :(得分:2)
这不仅毫无意义,而且可能适得其反。如果android想要你的进程使用的内存,它将终止进程来回收它;如果没有,它就不会。
要专门解决您的问题,查杀或退出进程不会调用析构函数,它只会终止执行,内核会批量释放所有内存和(常规)资源。
不要试图再次猜测系统,因为这可能经常导致杀死进程只让android立即重启它。此外,它可能会导致一些Android IPC资源(如相机)出现问题,当利用应用程序的进程意外死亡时,这些资源可能无法释放。