如何暂停执行直到听众完成?

How to pause execution until listener finished?

如何以 pause() 停止代码执行(阻止 proceedFurther() 执行)直到 resume() 被调用的方式实现 pause()resume()点击 button?

button.setOnClickListener(new View.OnClickListener() {
    @Override
     public void onClick(View v) {
         resume();
     }
});
pause();
proceedFurther();

据我所知,OnClickListener 创建了一个单独的线程,主线程必须以某种方式停止,并发性的东西我不知道。

是在主 UI 线程上调用的结果 onClick() 函数。

如果您想在后台执行某些操作,请使用 AnsycTask。

您的假设是错误的 - 单击侦听器中的代码在 UI 线程中执行。

因此,为了更好地定义任务 - 您不想确保仅在执行 resume() 之后才调用 proceedFurther()。

有两种实现方法:

  • 如果您不需要后台处理 - 恢复不会触及数据库或网络,或其他潜在的内存 - 繁重且耗时的东西,您可以只在回调:

    public void onClick(View v) {
        resume();
        proceedFurther();
    }
    
  • 如果确实需要在后台线程中执行resume(),确实可以使用AsyncTask。您只需要在 doInBackground() 中调用 resume() 并在 onPostExecute() 中调用 proceedFurther()。