0

私は CPP を使用しており、タイムアウト メカニズムを実装したいと考えています。
フォームの例、「foo()」と呼ばれる関数は、タイムアウト後に 1 つの関数の実行をトリガーするだけで、戻ります。

なぜこれが必要なのですか?

私は 1 つの CPP ライブラリ (JNI インターフェイスを使用) を使用する 1 つの Android アプリケーションを持っています。これらの関数を別のスレッドで (lib の制限として Java または CPP から) 呼び出すことはできません。そのため、Android アプリケーションで ANR を取得します。

だから私は何をするか、私は JNI を使用して CPP レイヤーで 1 つの関数を呼び出します。これは 1 つのタイマーを開始し、Android の UI スレッドが ANR を与えないように戻ります。処理が完了すると、Java 層に通知されます。

これをどのように実装すればよいですか?

4

1 に答える 1

0

ネイティブ C++ コードでは、POSIX タイマーやその他の POSIX 関数も使用できます。

http://www.kernel.org/doc/man-pages/online/pages/man2/timer_create.2.html

多くの標準タスク (タイマー、スレッド、ソケットなど) を容易にするために、boostライブラリの使用を検討することをお勧めします。少し勉強が必要ですが。ブーストの公式 Android ポートはありません。しかし、この本http://www.wowebook.be/book/android-ndk-beginners-guide/#のようなブーストを構築する方法の指示があります

于 2012-08-17T11:17:56.407 に答える