У меня есть простое действие без интерфейса.Я хотел проверить методы жизненного цикла действия во время вызова.
Когда приходит уведомление о вызове, ничего не происходит, как ожидалось.Когда я принимаю вызов, действие по вызову скрывает мою активность.Итак, в идеале 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.
Здесь,другая деятельность покрывает мою деятельность и скрывает ее.Таким образом, onStop()
должен быть вызван сразу после onPause()
.
Я тестировал его на устройстве Moto G4 и эмуляторе Nexus 5.Оба показывают одинаковое поведение.В чем причина задержки onStop () ?
Кто-нибудь может объяснить внутренние детали?
Скриншоты 