如何以pause()
停止代码执行(阻止resume()
执行)的方式实现pause()
和proceedFurther()
,直到resume()
被调用为止button
?
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resume();
}
});
pause();
proceedFurther();
据我所知,OnClickListener创建了一个separeate线程,并且必须以某种方式停止主线程并使用我不知道的并发内容。
答案 0 :(得分:1)
您的假设是错误的 - 单击侦听器中的代码在UI线程中执行。
因此,为了更好地定义任务,您不必确保仅在执行resume()之后调用proceedFurther()。
他们有两种方法可以做到这一点:
如果您不需要后台处理 - 恢复不会触及数据库或网络,或者其他潜在的内存耗费大量时间,您可以在回调:
public void onClick(View v) {
resume();
proceedFurther();
}
如果确实需要在后台线程中执行resume(),您确实可以使用AsyncTask。你只需要在doInBackground()中调用resume()并在onPostExecute()中调用proceedFurther()。
答案 1 :(得分:0)
是否在主UI线程上调用了生成的onClick()函数。
如果你想在后台使用AnsycTask。