2016-05-11 15 views
2

従来のSystem.loadLibrary()メソッドを使用して、静的なJavaブロックから共有ライブラリをロードします。ライブラリには静的に割り当てられたグローバルオブジェクトがあります。Android - ネイティブなグローバルオブジェクトデストラクタは一度も呼び出されません

class Foo 
{ 
public: 
    Foo() 
    { 
    } 

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


Foo dummy; 

グローバル関数logtofileは、ログファイルをsdcardに書き込みます。ライブラリがロードされるときにコンストラクタが呼び出される間、デストラクタは決して呼び出されないようです。私は、2つのコンストラクタの間でデストラクタ呼び出しが必要であると予想していました。だから問題は、Fooデストラクタが呼ばれたときです。

答えて

1

Androidはネイティブライブラリをアンロードしません。通常は、システムがリソースを必要と判断したときにアプリプロセスは自発的に終了し、kill -9と同等の処理を行い、デストラクタやJavaを呼び出すことはありませんfinalize()

関連する問題