如何在android中只标记一个活动的一个实例?

时间:2014-12-23 01:51:22

标签: android android-activity android-button

在我的Android应用程序中,我有一个按钮,当点击时会打开另一个活动。问题是用户可以快速多次点击该按钮,这将打开很多新活动。如何强制它,以便一次只能打开其中一个活动?

我想避免做一些大事,比如禁用按钮或加载加载屏幕。

2 个答案:

答案 0 :(得分:1)

设置Intent.FLAG_ACTIVITY_SINGLE_TOP。这样可以确保只创建一个Activity实例:

  

如果设置,如果活动已经在历史堆栈的顶部运行,则不会启动该活动。

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP

答案 1 :(得分:1)

如果方案与您描述的一样简单,您可以使用FLAG_ACTIVITY_SINGLE_TOP启动活动。这将阻止在已经显示新实例的情况下创建新实例。一个粗略的例子:

btn.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v) {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(MainActivity.this, CalledActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                startActivity(intent);
            }
        }, 1000);
    }
});

快速按下按钮将创建许多没有Intent标志的CalledActivity实例。