我有一个没有UI的简单活动。我想在调用期间检查活动的生命周期方法。
当call的通知到达时,没有任何事情按预期进行。当我接受呼叫时,call的活动就会掩盖我的活动。因此,理想情况下应该立即调用onStop()。我已经检查了日志,在接受呼叫时只调用了onPause()。但是在2-3秒之后,onStop()也会被调用。
活动
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
Log.e(TAG, "onStart: ");
}
@Override
protected void onStop() {
super.onStop();
Log.e(TAG, "onStop: ");
}
@Override
protected void onPause() {
super.onPause();
Log.e(TAG, "onPause: ");
}
@Override
protected void onResume() {
super.onResume();
Log.e(TAG, "onResume: ");
}
}清单
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>日志
05-17 22:10:25.025 E/MainActivity: onStart:
05-17 22:10:25.054 E/MainActivity: onResume:
When call has been accepted:
05-17 22:10:34.405 E/MainActivity: onPause:
After 2-4 seconds:
05-17 22:10:38.144 E/MainActivity: onStop: 根据onStop()的:
Called when you are no longer visible to the user. You will next receive either onRestart(), onDestroy(), or nothing, depending on later user activity.在这里,另一个活动是覆盖并隐藏我的活动。因此,应该在onPause()之后立即调用onStop()。
我已经在Moto G4设备和Nexus5模拟器上进行了测试。两者都表现出相同的行为。延迟onStop()调用的原因是什么?
有人能解释一下内部细节吗?
截图

发布于 2018-05-23 08:03:57
如果要在活动A的顶部打开活动B,则生命周期如下所示
活动A的
正如您所看到的,在活动A的onpause和onstop之间调用了许多方法,因此出现了延迟
发布于 2018-05-29 00:03:56
我认为这更多地与呼叫显示的实现方式有关。当你的活动不再具有前台的主要焦点,但在技术上仍然是“可见的”时,就会调用onPause。当您的活动不再可见时,将调用onStop。
两个活动可以有一个可见状态,这将导致只为活动调用onPause,而不是焦点。通过在activity顶部显示call视图,您的activity可能仍然是“可见的”,而不会完全消失。这就是为什么调用onPause而不是onStop的原因。
https://stackoverflow.com/questions/50396700
复制相似问题