私はAsyncTaskLoaderを使用します。loadInBackgroud()メソッドでは、ブール値を返すネイティブ ライブラリ ( any_method() と呼びましょう) のメソッドを使用します。any_method() は独自のスレッドを使用しているため、しばらくすると有意な値を返す可能性があると思います (最初のメソッドは false を返し、しばらくすると true になります)。any_method() が true を返さない間、loadInBackground スレッドを一時停止したい。
今私はこれを行います:
public Uri loadInBackground() {
...
final LNI noiseInfo = mEngine.any_method(); // native method
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
if (noiseInfo == null) {
handler.post(this);
}
}
};
runnable.run();
...
return value;
}
次のエラーが表示されます。
java.lang.RuntimeException: Looper.prepare() を呼び出していないスレッド内でハンドラを作成できません