Android连续点击两次按钮启动两次Activity

这个BUG 广泛存在很多APP中  

分享个人在解决此类BUG一些想法。

一 ,通过activity的启动时间来处理此问题

1. 在 AndroidManifest.xml 中设置 Target Activity 的属性,设置它的 launchMode

关于 launchMode 的参数一共有 4 个:  

Android代码 

android:launchMode=["standard"| "singleTop" | "singleTask" | "singleInstance"]  

四种模式 大家可以百度

简单介绍就是 standard 标准模式  每次启动新的activity 也是默认模式。

singleTop 只有一个实例在堆栈顶部,意思就是有则复用,这个方法会调用activity的 onnewIntent(Intent intent);

singlTask 在堆栈中只有一个实例,有则出栈 销毁上面的activity。让自己处于顶部。

singInstance 启用一个新的栈结构,将Acitvity放置于这个新的栈结构中,并保证不再有其他Activity实例进入.

2. 在代码里对 Intent 进行设置: 这我想说的是 setFlags 和 addFlags 之间的区别,

如果 setFlags 是可以改变原来 flag 设置, addFlags 如果原先有类似设置就不能被加入了

Android代码:

Intent intent = new Intent();

intent.setClass(getApplicationContext(), TargetActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);startActivity(intent);\

也可以在Mainfest中配置  代码中优先级大于Mainfest中的属性。

二 ,通过限制点击事件的间隔时间来解决,判断两次点击的时间间隔 小于500ms则忽略,实现起来也比较简单   

  • public static boolean isFastDoubleClick() {
  •         long time = System.currentTimeMillis();
  •         long timeD = time - lastClickTime;
  •         if (timeD >= 0 && timeD <= 500) {
  •             return true;
  •         } else {
  •             lastClickTime = time;
  •             return false;
  •         }
  •     }

具体就不说了。推荐使用第一种方式。

你可能感兴趣的:(android,积累)