我在我的android应用程序中有一个简单的onClickListener按钮,它所做的就是将一些东西写入数据库。它看起来是这样的android锁定eventListener,甚至处理
private void setEventListeners(){
mSpecialViewClass.getSubmitButton().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
handleSubmitClick();
}
});
}
private void handleSubmitClicks(){
if (counter<0){
writeCounterToDb();
} else {
//do some stuff
closeDatabase();
}
}
现在这个工作得很好,但如果我点击按钮速度不够快,我得到一个封闭的DB错误
java.lang.IllegalStateException: database not open
如何防止关键监听器做任何事情,在之前的关键事件被处理之前?
编辑︰一些用户建议关闭我的数据库上Activity.onDestroy()这是相当不错的,他删除了答案。对于我的问题,这是一个很好的解决方法,但仍然不是我正在寻找的解决方案。
我也尝试禁用按钮并启用各种位置上的按钮,问题依然存在。看起来我总是可以实现该功能多次被调用,如果我点击按钮的速度太快。
你的数据库在哪里打开? – Pikaling
我在'onCreate'事件中打开了我的数据库,因为在此之前我还做了一些其他事情。而'closeDatabase()'实际上是一个'finishActivity()',但我不认为这与问题有关。我希望这有帮助。 – zidarsk8