【发布时间】:2015-02-21 03:54:00
【问题描述】:
在我的 android 应用程序中,我有一个按钮,单击该按钮会打开另一个活动。问题是用户可以快速多次点击该按钮,它会打开很多这些新活动。如何强制它一次只能打开其中一项活动?
我想避免做大事,比如禁用按钮或放置加载屏幕。
【问题讨论】:
标签: android android-activity android-button
在我的 android 应用程序中,我有一个按钮,单击该按钮会打开另一个活动。问题是用户可以快速多次点击该按钮,它会打开很多这些新活动。如何强制它一次只能打开其中一项活动?
我想避免做大事,比如禁用按钮或放置加载屏幕。
【问题讨论】:
标签: android android-activity android-button
如果场景如您描述的那么简单,您可以使用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 实例。
【讨论】:
设置Intent.FLAG_ACTIVITY_SINGLE_TOP。这样可以确保只创建一个 Activity 实例:
如果设置,如果 Activity 已经在历史堆栈的顶部运行,则不会启动它。
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP
【讨论】: