欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在使用startActivityForResult时设置的SingleTop不起作用

程序员文章站 2022-07-14 12:13:52
...

【转载请注明出处:From李诗雨—http://blog.csdn.net/cjm2484836553/article/details/77972725

不诗意的女程序猿不是好厨师~

问题描述:
今天在使用startActivityForResult启动activity时,发现当过快点击Button时,会弹出很多个Activity页面,查看功能清单文件发现是设置了启动模式为SingleTop了的:

android:launchMode="singleTop"

也就是说在使用startActivityForResult启动activity,即使设置了SingleTop也是不起作用的。

于是换了一个SingleInstance再试,发现过快点击Button弹出多个Activity页面的问题是解决了,但是startActivityForResult的回调却不起作用了。

问题原因:
以后有时间再补上 ^~^

解决办法:
1.性价比最高的解决办法:
设置时间间隔,当时间间隔大于一定的数值时,才去启动带回调的activity

//用于记录进入SaveActivity的时间
    private long inSaveActTime;

    private void setListener() {

            btnChannelSave.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //当当前的时间-进入SaveActivity的时间<1秒时,直接返回
                    if ((System.currentTimeMillis() - inSaveActTime) < 1000) return;
                    inSaveActTime = System.currentTimeMillis();

                    //只有当间隔时间大于1秒才去启动Activity
                    Intent intent_save = new Intent(CreateChannelAct.this, SaveActivity.class);
                    intent_save.putParcelableArrayListExtra("saveDataList", (ArrayList<? extends Parcelable>) rebuildSaveContainer);
                    startActivityForResult(intent_save, CHANNEL_SAVE_REQUEST);
                }
            });
    }

2.当点击时设置标记位,在适当的时候再改变标记位

3.不使用startActivityForResult的启动方式,自己写接口回掉或者发广播

积累点滴,做好自己~