Android:关闭你的前任的活动

时间:2013-05-08 14:06:31

标签: android android-intent android-activity

我有两个活动,“A”和“B”,“A”打开“B”。当用户点击活动“B”上的后退按钮时,我不想看到“A”,我只想关闭“A”。所以在“B”上我这样做了:

@Override
    public void finish() {
        // TODO Auto-generated method stub

        Intent intent = new Intent(this, LoginActivity.class).putExtra(TAG, TAG).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                                              
        startActivity(intent);
        //super.finish();
    }

在活动“A”中,我这样做了:

@Override
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);         

         if(getIntent().getExtras() != null)
             if(getIntent().getStringExtra(HomeActivity.TAG) != "")
                 finish();              

    }

它完美无缺,但我得到了这个例外:

E/ActivityThread(11115): Activity br.com.pedmobiledroid.view.controller.LoginActivity has leaked IntentReceiver com.android.internal.policy.impl.multiwindow.MultiPhoneWindowEvent$1@42045be0 that was originally registered here. Are you missing a call to unregisterReceiver()?

有人确实知道更好的方法吗?

2 个答案:

答案 0 :(得分:0)

好的,你需要重新排序你的逻辑。

而不是在来自活动B时杀死活动A,如果它转到活动B,则简单地杀死活动A.这样,当用户按下时它不会在后台上:)

所以,从A:

Intent startActivityBIntent = new Intent(this, MyClassB.class);
startActivity(startActivityBIntent);
this.finish();

就是这样,活动B上不需要代码,因为A已经完成了自己。

答案 1 :(得分:0)

启动finish()后,只需在ActivityA上致电ActivityB

Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
finish();