如何以 pause()
停止代码执行(阻止 proceedFurther)的方式实现
从执行) 直到 pause()
和 resume()
()resume()
通过点击 button
被调用?
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resume();
}
});
pause();
proceedFurther();
据我所知,OnClickListener 创建了一个单独的线程,主线程必须以某种方式停止,并发性的东西我不知道。
最佳答案
您的假设是错误的 - 点击监听器中的代码是在 UI 线程中执行的。
因此,为了更好地定义任务 - 您不想确保仅在 resume() 执行后才调用 proceedFurther()。
有两种实现方式:
如果您不需要后台处理 - 恢复不会触及数据库或网络,或其他潜在的内存 - 繁重且耗时的东西,您可以在回调中进行顺序方法调用:
public void onClick(View v) { resume(); proceedFurther(); }
如果您确实需要在后台线程中执行 resume(),您确实可以使用 AsyncTask。您只需在 doInBackground() 中调用 resume() 并在 onPostExecute() 中调用 proceedFurther()。
关于java - 如何暂停执行直到听众完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31584224/