( 一 ) 项目中,遇到这个问题,一个activity在finish时候,还有收到广播,结果导致bug。
在广播接收器中先判断一下比较保险。或者在onDestroy里面注销广播
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, intent.toString());
final String action = intent.getAction();
if(isFinishing()) {
。。。。。。。
return;
}
}
( 二 ) 在activity finish时候,这时候handler.sendMessage,这时候也会导致bug,这时候最好在finish函数里面removeAllCallbackAndMessage(this)。
( 三 ) 在Activity调用了finish();后立即使用AlertDialog将会报错,可能原因是Android系统finish 1个Activity需要一个过程才能完成。解决办法是调用之判断一下。
private void showDialog(Context context) {
if(LoadingActivity.this.isFinishing()) { //就是这一行。
Log.d(TAG,"is finishing, will stop showing alert dialog.");
return;
}
final Builder dialog = new AlertDialog.Builder(LoadingActivity.this);
dialog.setTitle("提示");
dialog.setMessage("干嘛呢,不干嘛啊!");
dialog.setPositiveButton("确定", dialogListener);
dialog.setNeutralButton("取消", dialogListener);
dialog.create();
dialog.show();
}