在活动之间切换会迅速破坏活动生命周期。如何解决这个问题?

时间:2016-07-12 04:30:52

标签: android android-activity android-lifecycle

我有2个活动即。活动A& ActivityB。

活动A的结构是:

public class ActivityA extends Activity
{
super.onCreate();
}

@Override
    protected void onStart() {
        super.onStart();
}

@Override
    protected void onStop() {
        super.onStop();
}

意图转到ActivityB

private void GotoActivityB() {

    Intent intent = new Intent(getBaseContext(), B.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();   
}

ACTIVITY B的结构是:

public class ActivityB extends Activity
{
super.onCreate();
}

@Override
    protected void onStart() {
        super.onStart();
}

@Override
    protected void onStop() {
        super.onStop();
}

意图转到ActivityA

private void GotoActivityA() {

    Intent intent = new Intent(getBaseContext(), A.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();   
}

当我从活动A切换到活动B时,活动生命周期按以下顺序进行:

的onCreate(A); - >调用onStart(A); - >的onStop(B);

请注意:我不在考虑onPause和onResume,因为它们分别是onStop()和onStart()调用。

当我从活动A切换到活动B时,活动生命周期按以下顺序进行:

的onCreate(B); - >调用onStart(B); - >的onStop(A);

我正在使用图标通过调用上述意图来浏览这两个活动。 当我通常使用该功能时,一切都很顺利。

但是,如果我以这种方式非常迅速地在这两个活动之间切换,

在活动A中,点击" B"图标转到活动B,然后立即在活动B中点击" A"图标转到活动A.

以上操作以下列方式破坏了我的活动生命周期:

A到B

的onCreate(A); - >调用onStart(A); - >的onStop(B);

B到A

的onCreate(B); - >的onStop(A); - >调用onStart(B);

如果你看到这里,在onStart(B)之前调用onStop(A),这违反了活动的生命周期。
这对我来说非常重要,因为我在onStop和onStart中设置了一些布尔变量,这个被破坏的生命周期给了我错误的值并使应用程序崩溃。

2 个答案:

答案 0 :(得分:2)

我认为这个回调在不同活动中的顺序没有定义,你不应该依赖它。

调用Activity的最后一个onResume()是用户与之互动的活动。 但是可能有多个活动已经开始但尚未恢复。

尝试使用onResume()onPause()代替onStart()onStop()

答案 1 :(得分:0)

我认为你不需要调用双方意图。

firstActivity->使用意图启动第二个 - > secondActivity

<强> secondActivity-&GT; backpressed-&GT; firstActivity

你不需要维持这些状态。你为什么要让自己陷入困境? 简单的Android。凉。