Android:onPause()保证在finish()之后被调用吗?

在任何地方找不到一个坚实的答案。 我有一个方法,finish()被调用,并onPause()后来调用。

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

Solutions Collecting From Web of "Android:onPause()保证在finish()之后被调用吗?"

除非你在onCreate()调用finish() ,否则如果你在Activity的生命周期的某个时间点调用finish() ,Android一般会调用onPause() 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"); } } 

运行,并观察你的日志将只包含“onDestroy”。 几乎在其他地方调用finish() ,你会看到onPause()被调用。

系统调用这个方法作为用户离开你的活动的第一个指示(尽pipe它并不总是意味着活动正在被销毁)。 这通常是您应该提交应该在当前用户会话之外保留的任何更改的位置(因为用户可能不会返回)。 所以onPause()是有保证的。 这里的官方文档

编辑1

onCreate()onDestroy() && onStart()onStop() && onResume()onPause() ..当onCreate()完成工作时调用onStart() 。 如果不是它没有调用.. onResume()表示ui即将显示给用户 – (一个活动的内容是用户看到的屏幕)。 如果你调用onCreate() finish()onPause()将被跳过,因为onResume()永远不会调用onStart() ..所以在某些情况下,你可以说它不是; 但是这将是错误的,因为什么是一个活动,不是一个屏幕或作为屏幕的容器(片段)。

你为什么要打完(); 直接在你的Activity的onCreate() ? 从一般活动如何工作, onPause()将始终保证正在调用..

是的,只要你的活动消失,onPause被调用。

这有点晚,但可能会帮助未来的游客。

当我尝试在本教程之后为我的应用创build启animation面时 ,我遇到了onPause()没有被调用的问题。

经过一些摆弄和强迫我的头脑,我明白了为什么! onCreate()方法如下所示:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(this, MainActivity.class); startActivity(intent); finish(); } 

所以在活动有机会开始恢复之前,我迫使它完成,绕过了其他的状态方法调用

但据我所知在任何其他情况下的正式Activity文档 (至less是正常的!) onPause()方法保证被调用!