有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (4) 个答案

  1. # 1 楼答案

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

    编辑1

    onCreate()就是onDestroy()&&onStart()就是{}&&onResume()是指onPause()onStart()onCreate()完成其工作时被调用。如果不是的话,那就不叫了onResume()表示即将向用户显示ui(活动的内容是用户看到的屏幕)。 如果在onCreate()中调用finish(),将跳过onPause(),因为onResume()从未被调用过相同的调用。。所以在某些情况下,你可以说它不是;但这是错误的,因为什么活动不是屏幕,也不是屏幕的容器(片段)

    你为什么要叫finish();直接在活动的onCreate()F从活动的一般工作原理来看,onPause()将始终保证正在呼叫

  2. # 2 楼答案

    是的,每当你的活动消失时,onPause就会被调用

  3. # 3 楼答案

    如果你在活动生命周期的某个时间点调用finish(),Android通常会调用onPause(),除非你在onCreate()中调用finish()

    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()被调用

  4. # 4 楼答案

    虽然有点晚,但可能对未来的游客有所帮助

    当我试图在this tutorial之后为我的应用程序制作一个启动屏幕时,我面临着onPause()没有被调用的问题

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

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

    因此,在活动有机会启动之前恢复之前,我强迫它完成,因此绕过了其他状态方法调用

    但据我所知,在任何其他情况下(至少在正常情况下!)保证调用onPause()方法