java - Thread.sleep 不会在 Android 中暂停应用
问题描述
在将某些内容插入 Firebase 数据库后,我想暂停我的 android 应用程序 1 秒钟。为此,我在内部使用以下代码作为侦听器:
firebase_DB.child(id).setValue(currentOrder).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
orderSuccesfullyWritten[0] =true;
orderCouldNotBeSendAfterMutipleAttemps[0] = false;
Log.e("dbTAG", "Data successfully written.");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
Log.e("dbTAG", task.getException().getMessage());
}
}
});
代码正在执行(并且我收到“数据已成功写入”但Threas.sleep(1000)
没有任何影响的消息。该应用程序只是直接继续下一步操作。知道为什么会这样吗?我会感谢每一条评论。
解决方案
一旦 firebase 查询已经完成,您将放置 thread.sleep。
只需将 Thread.sleep 移动到您的 firebase 查询之后
firebase_DB.child(id).setValue(currentOrder).addOnCompleteListener(do something);
Thread.sleep(1000);
firebase 查询异步运行,这意味着它在后台线程上运行。因此,使用此代码,主线程将在执行 firebase 查询时休眠一秒钟
推荐阅读
- python - 从无序的元组中获取路由
- java - 如何将数字二进制表示的java链表转换为数字十进制表示的字符串?
- r - 如何在另一个大的空矩阵中插入矩阵的值
- ruby-on-rails - 如何使 Ruby 方法结束/停止另一个请求?(轨道 API)
- ruby-on-rails - 如何在 Rails 索引页面中显示 json 数据两种模型?
- c++ - 可以传递给自动模板参数的内容是否有限制?
- sql - 计算超过几个月的两个日期之间的持续时间(拆分)
- ios - 创建一个具有非可选值的常量元组,并与另一个具有可选值的元组进行比较
- c# - 在 2 个表单之间发送数据
- mysql - 仅从数据 mysqldump 恢复数据库