我有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中设置了一些布尔变量,这个被破坏的生命周期给了我错误的值并使应用程序崩溃。
答案 0 :(得分:2)
我认为这个回调在不同活动中的顺序没有定义,你不应该依赖它。
调用Activity
的最后一个onResume()
是用户与之互动的活动。
但是可能有多个活动已经开始但尚未恢复。
尝试使用onResume()
和onPause()
代替onStart()
和onStop()
。
答案 1 :(得分:0)
我认为你不需要调用双方意图。
firstActivity->使用意图启动第二个 - > secondActivity
<强> secondActivity-&GT; backpressed-&GT; firstActivity 强>
你不需要维持这些状态。你为什么要让自己陷入困境? 简单的Android。凉。