Android 油门按钮点击
Android Throttle Button Click
我知道在某些情况下,可能需要限制(或完全禁用)按钮点击。我们一直在使用 RxView 来处理这种情况:
RxView.clicks(button)
.throttleFirst(500, TimeUnit.MILLISECONDS)
.subscribe(aVoid -> {
//do work
});
我不确定的情况是单击按钮时开始新的 activity。这种情况有必要节流吗?我最初认为一旦新的 activity 启动,旧的 activity 将不再收到任何对 onClick 的调用,但现在我不确定。
button.setOnClickListener(view -> {
Intent i = new Intent(context, TestActivity.class);
context.startActivity(i);
});
有没有我遗漏的边缘情况?感谢任何见解!
是,您仍应限制该点击。当在 activity 上调用 finish()
时,您仍然可以在几毫秒的时间内与其进行交互。
- 当您执行
startActivity()
或 finish()
时,您只是在排队此请求。实际操作稍后发生,异步。
- 因此,当您开始一个新的 activity 并完成当前的一个时,这两件事是异步发生的,并且彼此完全独立。如果您先完成当前的 activity 并在代码的下一行开始新的 activity,这实际上并不重要。
- 在完全启动之前,B 将执行
onCreate()
、onResume()
、onStart()
等中的逻辑。这将花费不同的时间,具体取决于逻辑耗时的长短。
- 在完全完成之前,A 将对
onPause()
、onStop()
和 onDestroy()
等中的逻辑执行相同的操作(或者只是其中的一些,具体取决于您在什么时候调用 finish()
).
我知道在某些情况下,可能需要限制(或完全禁用)按钮点击。我们一直在使用 RxView 来处理这种情况:
RxView.clicks(button)
.throttleFirst(500, TimeUnit.MILLISECONDS)
.subscribe(aVoid -> {
//do work
});
我不确定的情况是单击按钮时开始新的 activity。这种情况有必要节流吗?我最初认为一旦新的 activity 启动,旧的 activity 将不再收到任何对 onClick 的调用,但现在我不确定。
button.setOnClickListener(view -> {
Intent i = new Intent(context, TestActivity.class);
context.startActivity(i);
});
有没有我遗漏的边缘情况?感谢任何见解!
是,您仍应限制该点击。当在 activity 上调用 finish()
时,您仍然可以在几毫秒的时间内与其进行交互。
- 当您执行
startActivity()
或finish()
时,您只是在排队此请求。实际操作稍后发生,异步。 - 因此,当您开始一个新的 activity 并完成当前的一个时,这两件事是异步发生的,并且彼此完全独立。如果您先完成当前的 activity 并在代码的下一行开始新的 activity,这实际上并不重要。
- 在完全启动之前,B 将执行
onCreate()
、onResume()
、onStart()
等中的逻辑。这将花费不同的时间,具体取决于逻辑耗时的长短。 - 在完全完成之前,A 将对
onPause()
、onStop()
和onDestroy()
等中的逻辑执行相同的操作(或者只是其中的一些,具体取决于您在什么时候调用finish()
).