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方法。之前没注意这点在两个方法内都写了判断导致无法正常跳转了。