安卓限流按钮点击

3

我了解有些情况下,按钮点击可能需要进行限流(或完全禁用)。我们一直在使用RxView来处理这种情况:

RxView.clicks(button)
        .throttleFirst(500, TimeUnit.MILLISECONDS)
        .subscribe(aVoid -> {
            //do work
        });

我不确定的情况是,当按钮点击开始一个新的活动时。在这种情况下有必要进行节流吗?我最初认为,一旦启动新活动,旧活动将不再接收任何关于 onClick 的调用,但现在我不确定了。

button.setOnClickListener(view -> {
    Intent i = new Intent(context, TestActivity.class);
    context.startActivity(i);
});

我是否有遗漏的边缘情况?欢迎提供任何见解!

1个回答

1

是的,您仍应该限制点击。当在一个活动上调用finish()时,在您可以与其互动的几毫秒内,它仍然存在。

  • 当您执行startActivity()finish()时,实际上只是将此请求排队。实际操作稍后异步发生。
  • 因此,当您启动新活动并完成当前活动时,这两个操作是异步且完全独立的。事实上,即使您先完成当前活动并在代码的下一行启动新活动,也没有任何影响。
  • B在完全启动之前,将在onCreate()onResume()onStart()等中执行逻辑。根据逻辑的耗时程度,这将需要不同的时间。
  • A在完全结束之前,将为在onPause()onStop()onDestroy()等中的逻辑执行相同的操作(或者只执行其中一些,具体取决于您在什么时候调用了finish())。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接