zoukankan      html  css  js  c++  java
  • Android:解决重复打开界面问题

    点击界面A按钮,打开界面B,由于startActivity操作是异步执行的,假如在短时间内快速点击按钮,可能会导致打开多个B界面,这个时候可以重写Activity的startActivity事件。

    public class BaseActivity extends Activity {    
        
        protected boolean isDestroy;
        //防止重复点击设置的标志,涉及到点击打开其他Activity时,将该标志设置为false,在onResume事件中设置为true
        private boolean clickable=true;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            isDestroy=false;
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            isDestroy=true;
            
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            //每次返回界面时,将点击标志设置为可点击
            clickable=true;
        }
    
        /**
         * 当前是否可以点击
         * @return
         */
        protected boolean isClickable(){
            return  clickable;
        }
    
        /**
         * 锁定点击
         */
        protected void lockClick(){
            clickable=false;
        }
    
    
    
        @Override
        public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
            if(isClickable()) {
                lockClick();
                super.startActivityForResult(intent, requestCode,options);
            }
        }
    }

    这里重写的是 startActivityForResult,因为startActivity方法最终调用的是startActivityForResult方法。之前没注意这点在两个方法内都写了判断导致无法正常跳转了。

  • 相关阅读:
    如果 BitTorrent 协议内置代币会如何?
    为什么 ETH2.0 要选择 libp2p ?
    关于 PoW 和 PoS
    Ceph 分布式存储架构解析与工作原理
    云端之战:Google Cloud 的多云战略和甲骨文的数据库云
    迈向全球经济结算层
    Hydro:DeFi 作为去中心化交易协议的依归
    Echo | 多副本共享账本的意义
    时间1234567890
    时间1234567890
  • 原文地址:https://www.cnblogs.com/linjzong/p/4627140.html
Copyright © 2011-2022 走看看