2

時間のかかるバックグラウンド処理を行うために、AsyncTask クラスで遊んでいます。独自の実装で AsyncTask クラスを拡張しました。doInBackground()メソッドが呼び出されると、ネイティブ C 関数が呼び出されます (この関数は、ダミーの時間のかかる処理を行い、文字列を返します) 。この関数は、たとえば 10 秒間実行されます。デバッグを容易にするために、ネイティブ関数は、LOGI() マクロを使用して Eclipse コンソールにメッセージを出力します。ネイティブ メソッドが計算を完了する前にユーザーがボタンを押した場合、AsyncTask メソッドを呼び出します。cancel(true)、しかしネイティブ関数は最後まで実行されます。その理由は、ネイティブ関数が別のプロセス (私のアクティビティによって読み込まれた共有ライブラリに関連するプロセス) に存在するためだと思います。最初の質問は、ネイティブ メソッドの return ステートメントが実行されるとどうなるかということです。文字列は誰に返されますか? 2番目の質問は、ネイティブ関数を安全に停止する方法についてです(メモリを割り当てるので、実行を停止して使用中のメモリを解放したい)。

4

0 に答える 0