我使用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() 的线程内创建处理程序