问题描述
如何实现pause()
和resume()
的方式, pause()
停止执行代码(防止proceedFurther()
从执行),直至resume()
通过点击所谓的button
?
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resume();
}
});
pause();
proceedFurther();
据我了解,OnClickListener创建了一个单独的线程,并且必须以某种我不知道的并发对象的方式停止主线程。
1楼
您的假设是错误的-点击监听器中的代码是在UI线程中执行的。
因此,为了更好地定义任务-您不必确保仅在执行resume()之后才调用procedFurther()。
它们是实现此目的的两种方法:
如果您不需要后台处理-简历不会触及数据库或网络,也不会占用其他潜在的内存-耗时又费力的话,您只需在回调中进行顺序方法调用即可:
public void onClick(View v) { resume(); proceedFurther(); }
如果确实需要在后台线程中执行resume(),则确实可以使用AsyncTask。 您只需要在doInBackground()中调用resume()并在onPostExecute()中调用proceFurther()。
2楼
是在主UI线程上调用的结果onClick()函数。
如果要在后台执行某些操作,请使用AnsycTask。