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

标签 java android multithreading concurrency java.util.concurrent

如何以 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/

相关文章:

java - FirebaseInstanceId 不再存在

android - Android 9 (Pie) 中的 java.lang.NoClassDefFoundError

Python:从另一个线程更改变量值

Java JDBC 准备语句不插入单引号(SQL 转义)

java - org.apache.commons.mail.MultiPartEmail 发送带有空正文的电子邮件

java - Android下载Zip(可以在服务器上更改名称)

android - 如何更改默认的汉堡包图标?

带有 Docker 的 Python Luigi - 线程/信号问题

java - 如果您可以捕获异常并稍后重试,那么锁定文件有什么意义呢?

java - 关于java中可克隆接口(interface)和object.clone()的混淆