防止多次启动相同的活动

时间:2017-09-15 13:58:06

标签: android android-intent android-activity

有很多与后台管理有关的问题,但没有人真的满意我。我找到的距离越近that one,但对我来说这看起来像是一个丑陋的解决方法。

点击活动 A 中的按钮时,我将startActivityForResult()启动活动 B ,期待一个简单的 A < / strong> - &gt; B 后筹码。 但是,如果你足够快地垃圾邮件按钮,你最终会被激活两个意图,因此两个活动堆叠在一起 A - &gt; B - &gt;的

我尝试使用FLAG_ACTIVITY_SINGLE_TOP标记来阻止创建第二个 B 活动,但它没有改变任何内容:

这是活动 A

中的按钮监听器
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(getApplicationContext(), ActivityB.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivityForResult(intent, REQUEST_CODE);
    }
});

并且日志明确指出调用了两次onCreate()(而不是预期的onNewIntent):

  

btn.onClick()

     

activityB.onCreate()

     

btn.onClick()

     

activityB.onCreate()

我的活动必须singleTasksingleInstance,它们应该作为任何常规活动的后备堆栈的一部分。任何许可都会非常感激!

1 个答案:

答案 0 :(得分:-1)

您的问题是按钮点击垃圾邮件启动了两项活动。

以简单的方式设置布尔字段以防止启动两个活动。

示例:

boolean isClicked;
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!isClicked){
                 isClicked = true;
                 //start activity here.
                }
            }
        });

onPause()设置布尔字段 false