【问题标题】:onPause, onResume, onStop, onStart, etc, not firing - life cycle?onPause、onResume、onStop、onStart 等,不触发 - 生命周期?
【发布时间】:2012-04-21 03:12:22
【问题描述】:

我有两个在平板电脑上协同工作的应用程序。我注意到如果用户退出一个应用程序并且下次打开应用程序时会调用 oncreate,但是如果他们回到家然后返回 oncreate 不会被调用。我还注意到 onPause、onStop、onResume 永远不会被调用..我需要一些方法来确保应用程序在用户回家时完成..

@Override
    protected void onPause () {
        super.onPause();
        Toast.makeText(this, "Pause MED", Toast.LENGTH_SHORT).show();
        finish();
    }

    @Override
    protected void onStop () {
        super.onStop();
        Toast.makeText(this, "stopped MED", Toast.LENGTH_SHORT).show();
    }


    @Override
    protected void onRestart () {
        Toast.makeText(this, "Restart MED", Toast.LENGTH_SHORT).show();
    }
    @Override
    protected void onStart () {
        Toast.makeText(this, "Start MED", Toast.LENGTH_SHORT).show();
    }
    @Override
    protected void onResume () {

        super.onResume();
        Toast.makeText(this, "RESUME MED", Toast.LENGTH_SHORT).show();
        Intent currentIntent = this.getIntent();
        Bundle extras = currentIntent.getExtras();

或者另一个选项是如果我的其他应用程序可以检查该应用程序是否打开并关闭它..

请帮忙

【问题讨论】:

  • 使用日志语句代替 Toast。当 Toasts 堆积起来时,它们会开始表现得很奇怪。日志没有阻塞时间,所以这不是问题,您将能够准确地看到调用的顺序。这也是@PaulG 指出的主页按钮的功能。
  • 抛开祝酒词,您是否会发布更多活动代码,因为您提供的内容不应该违反生命周期?

标签: android android-lifecycle


【解决方案1】:

主页按钮不会杀死应用程序,它应该在点击时调用 onPause() 并在之后返回应用程序时调用 onResume()。不使用 toast,为什么不打印到日志?我确信这些方法正在被解雇。可能只是 Toast 没有显示,因为这些方法是在 UI 可以修改之前或之后调用的。

我还从经验中注意到了一些看起来有点奇怪的事情:即使您启动应用程序的新实例(按主页按钮后不会返回),onResume() 也会被触发...我是很确定,只要您的活动进入前台,就会触发 onResume(),无论它是否已经在后台运行。

【讨论】:

  • 不,他们不是!!! onPause() 永远不会被调用?相信我,我有日志和祝酒词.. 都没有显示
【解决方案2】:

您的应用在按下主页按钮后触发 onCreate(),因为当您在 onPause() 中调用 finish() 时正在销毁您的应用。它必须在销毁后重新创建。我也相信这会导致你的 Toast 出现意外行为,因为你已经破坏了它的上下文。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-13
    • 2011-04-21
    • 2012-07-21
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多