`
leewind
  • 浏览: 7642 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类

<Android> Button 连续点击两次启动两次Activity的问题处理

阅读更多

最近在 debug 的时候遇到一个很有意思的问题, Activity 中有一个 button ,这个 button 里面写了一些判断处理数据的逻辑,需要耗费一点时间。当用户在 1 秒内连续点击 2 button ,会启动 2 Activity

很有意思的问题,我一直以为 Activity 当前只能启动一个。在没有请教公司高手之前,我的处理方式是:用一个状态变量控制 button 能不能被点击。         但是被否决掉了,因为这样的 unclickable 对用户来说是不可理解的。

Button button = (Button)findViewById(R.id.btn); 
button.setClickable(false);

 

后来公司的一个高手解决了这个问题,其实很简单,只是我缺乏了这方面的知识。

有两种方法可以解决这个问题:

 

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

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

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

 

        具体可以查一些 reference ,这里我要说的是 singleTop singleTask ,你用这些参数之前一点要明白 task 是什么意思。在这里我只希望有一个 activity 在堆栈里,不要反复创建,调用它时直接从堆栈里面取出置顶,所以我用 singleTop

 

2. 在代码里对 Intent 进行设置:       这我想说的是 setFlags addFlags 之间的区别,如果 setFlags 是可以改变原来 flag 设置, addFlags 如果原先有类似设置就不能被加入了

Intent intent = new Intent(); 
intent.setClass(getApplicationContext(), TargetActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
startActivity(intent); 

 

放了一个做成的Project在上面

http://yfdisk.com/file/leewind841209/d3b7f0a8/

可以下载下来看看,欢迎留言指点

分享到:
评论

相关推荐

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    期末大作业:Android视频播放器

    7、使用到物理按钮事件,连续两次点击主界面的返回按钮才能退出系统,否 则给予提示 8、使用到网络编程,用http协议调用JSON格式的接口 9、实现Handle机制实现系统的某一个功能 10、使用系统的提示框,删除提示 ...

    android实习报告(1).doc

    在注册Activity是加入 &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; &lt;category android:name="android.intent.category.LAUNCHER" /&gt; &lt;/intent-filter&gt; 可指定当前的Activity为主Activity...

    android 五子棋源码

    //图片自动进行切换,每隔两秒进行一次切换 scheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 1,2, TimeUnit.SECONDS); super.onStart(); } @Override protected void onStop() { //当...

    高仿微信界面

    &lt;/android.support.v4.view.ViewPager&gt; &lt;TextView android:layout_width="match_parent" android:layout_height="0.5dp" android:background="#737373" /&gt; &lt;TextView android:layout_width="match_parent...

    自己平时做的android相关的总结

    Activity 中两次调用OnCreate的原因 ByteBuffer 和 FloatBuffer 的直接分配和非直接分配 Application的使用小总结 “call to OpenGL ES API with no current context (logged once per thread” 问题的解决 2013年9...

    AndroidStudio简单计算器的实现

    首先此项目是本人学校安卓开发的一次作业,用Android Studio开发一个简单的计算器,这个计算器正常的功能为带括号的加减乘除多项式计算! 界面展示 废话不多说先展示一下界面!(模仿了小米计算器),有两种方式添加...

    Android实训报告(1).docx

    第一个Activity:两个单选框(RadioButton)获取性别,一个输入框(EditText)获取身高,一个可选输入框(EditText)获取实际体重,一个按钮(Button)及一些提示文本。 Android实训报告(1)全文共12页,当前为第4页...

    Android开发资料合集-World版!

    2.1.8、一次性关闭所有的Activity 22 2.1.9、PreferenceActivity 用法 22 2.1.10、Dialog风格的Activity 23 2.1.11、横竖屏切换不销毁当前Activity 23 2.2、INTENT RECEIVER 25 2.3、SERVICE 26 2.3.1、什么是...

    计步器的实现

    android计步器的实现,自定义的一个弧形进度条,记步通过手机的传感器来实现,也就是说不支持传感器的机子(应该很老的了吧)就没有效果。看看效果图: 这里写图片描述这里写图片描述 自定义View public class ...

    Android 开发技巧

    2.1.8、一次性关闭所有的Activity 22 2.1.9、PreferenceActivity 用法 22 2.1.10、Dialog风格的Activity 23 2.1.11、横竖屏切换不销毁当前Activity 23 2.2、INTENT RECEIVER 25 2.3、SERVICE 26 2.3.1、什么是...

    Android实训报告.doc

    通过程序功能分析,可将程序划分为2个模块,即2个Activity: 第一个Activity:两个单选框(RadioButton)获取性别,一个输入框(EditText) 获取身高,一个可选输入框(EditText)获取实际体重,一个按钮(Button)...

    Android实训报告(2).doc

    通过程序功能分析,可将程序划分为2个模块,即2个Activity: 第一个Activity:两个单选框(RadioButton)获取性别,一个输入框(EditText) 获取身高,一个可选输入框(EditText)获取实际体重,一个按钮(Button)...

    浅谈Android编码规范及命名规范

     目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑。  现大框架已经完成,正在进行细节模块上的开发  抽空总结一下Android项目的开发规范:1、编码规范 2、命名规范   注:...

Global site tag (gtag.js) - Google Analytics