【问题标题】:How to flag only one instance of an activity in android?如何在android中仅标记一个活动实例?
【发布时间】:2015-02-21 03:54:00
【问题描述】:

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

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

【问题讨论】:

    标签: android android-activity android-button


    【解决方案1】:

    如果场景如您描述的那么简单,您可以使用FLAG_ACTIVITY_SINGLE_TOP 启动 Activity。如果已经显示一个实例,这将阻止创建新实例。一个粗略的例子:

    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秒后运行。这需要成为一些时间问题吗?
    • @omega 不,一点也不!这只是轻松重现您描述的“多次按下按钮”问题的示例。 :)
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 2018-05-28
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多