当我使用a wait时AsyncTask,我得到了ERROR/AndroidRuntime(24230): Caused by: java.lang.IllegalMonitorStateException: object not locked by thread before wait()
是否有可能使用Asynctask等待?怎么样?
谢谢
class WaitSplash extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
try {
wait(MIN_SPLASH_DURATION);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute() {
waitSplashFinished = true;
finished();
}
}
Run Code Online (Sandbox Code Playgroud) 这是我的问题:我有一个对话框,其中包含一些用户可以更改的参数(例如通过微调器).每次更改其中一个参数时,我都会根据新参数值启动一个线程来更新3D视图.如果用户在第一个线程工作时更改了另一个值(或者通过在微调器箭头上单击多次再次返回相同的值),我想中止第一个线程(以及更新3D视图)并启动一个新线程使用最新的参数值.
我怎么能这样做?
PS:run()我的线程方法中没有循环,因此检查标志不是一个选项:更新3D视图的线程基本上只调用一个执行时间很长的方法.我无法在此方法中添加任何标志,要求中止,因为我无法访问其代码.