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

问题描述 投票:-1回答:2

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

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

android android-activity android-button
2个回答
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实例。


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.