Android:是否保证在finish()之后调用onPause()?

Kac*_*acy 9 java android

无法在任何地方找到可靠的答案.我有一个方法,其中调用finish(),然后调用onPause().

是否保证在调用finish()后调用onPause()?

小智 15

onPause()如果你finish()在活动的生命周期中的某个时刻打电话,Android通常会打电话,除非你打电话给finish()onCreate().

public class MainActivity extends ActionBarActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    finish();
  }



  @Override
  protected void onPause() {
    super.onPause();
    Log.d(TAG, "onPause");
  }

  @Override
  protected void onStop() {
    super.onStop();
    Log.d(TAG, "onStop");
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "onDestroy");
  }
}
Run Code Online (Sandbox Code Playgroud)

运行,并观察您的日志将只包含"onDestroy".finish()几乎在其他任何地方打电话,你会看到onPause()被调用.

  • 出于好奇,你怎么找到这个?您是否在某个时候阅读过资源,或者您是否只是在某一天使用您的代码?什么是角落案例.谢谢. (2认同)

Ell*_*ltz 6

系统将此方法称为用户离开您的活动的第一个指示(尽管并不总是意味着活动正在被销毁).这通常是您应该提交应该在当前用户会话之外保留的任何更改的地方(因为用户可能不会回来).所以 onPause()保证.. 这里的官方文件

编辑1

onCreate()onDestroy()&& onStart()is to onStop()&& onResume()is to onPause().. onStart()onCreate()完成其工作时被调用.如果不是它没有被调用.. onResume()表示ui即将被显示给用户 - (活动的内容是用户看到的屏幕).如果你打电话finish()onCreate(),onPause()将被跳过,因为onResume()从来没有叫同去onStart()..所以在某些情况下,你可以说它不是; 但那将是错误的,因为什么是不是屏幕的活动或者作为屏幕的容器 - (片段).

为什么你会叫完(); 直接在你的Activity中onCreate()˚F ROM活动一般是如何工作的,onPause()将始终保证被调用..