1)防止活动创建相同类型的重复子活动
(例如Activity A
如果用户快速点击Activity B
则会开始2 "start B"
2)防止活动一次创建多于1个活动
(例如Activity A
如果用户点击Activity B
后快速Activity C
,则会启动1x "start B"
和1x "start C"
(活动A)可以开始(活动B)和(活动C)
(活动B)可以开始(活动D)
(活动C)什么都不开始。
(活动D)可以什么也不开始。
每个活动都有1个按钮,可以启动每个活动。例如(活动A)有2个按钮。
每个按钮都附加到事件监听器,如下所示
buttonStartB.setOnClickListener(new View.OnClickListener()
{
Intent myIntent = new Intent(ActivityA.this, ActivityB.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // to achieve property (1)
startActivityForResult(myIntent, SOME_CONSTANT_REQUEST_CODE_VALUE);
// don't know how to achieve property (2)???
});
答案 0 :(得分:1)
如果我理解正确,我们会在下一个Activity
启动之前讨论一些问题。所以我会使用以下两个选项之一:
选项1 :
禁用您不希望接受进一步输入的所有UI元素(例如Button
)。在一定延迟后重新启用它们,例如使用Handler#postDelayed()
这种方法的问题在于按钮从“启用”闪烁到“禁用”并且返回可能看起来很糟糕。因此,不是禁用UI元素,而是......
选项2 :使用boolean enabled = true;
并在点击第一个Button
后切换它。检查onClick()
中的值,仅处理点击enabled == true
。使用上述true
将值重置为Handler
。