当前位置: 代码迷 >> java >> 如何暂停执行直到侦听器完成?
  详细解决方案

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

热度:83   发布时间:2023-08-02 10:43:42.0

如何实现pause()resume()的方式, pause()停止执行代码(防止proceedFurther()从执行),直至resume()通过点击所谓的button

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

据我了解,OnClickListener创建了一个单独的线程,并且必须以某种我不知道的并发对象的方式停止主线程。

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

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

它们是实现此目的的两种方法:

  • 如果您不需要后台处理-简历不会触及数据库或网络,也不会占用其他潜在的内存-耗时又费力的话,您只需在回调中进行顺序方法调用即可:

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

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

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

  相关解决方案