Android - 从不调用本机全局对象析构函数

时间:2016-05-11 13:46:59

标签: android c++ java-native-interface

我从静态java块加载带有经典System.loadLibrary()方法的共享库。该库具有静态分配的全局对象:

class Foo
{
public:
   Foo()
   {
   }

   ~Foo()
   {
      logtofile( "Foo::~Foo() called" );
   }
}


Foo dummy;

全局函数logtofile在sdcard上写入日志文件。在加载库时调用构造函数,在我看来,析构函数永远不会被调用。我希望在两个构造函数之间调用应该有一个析构函数调用。所以问题是:何时调用Foo析构函数?

1 个答案:

答案 0 :(得分:1)

Android永远不会卸载本机库;通常,当系统决定它需要资源时,应用程序进程会自发死亡 - 它会相当于kill -9,从不调用析构函数或Java finalize()