【问题标题】:Android Activity LifeCycle - when 'onPause' is called?Android Activity LifeCycle - 何时调用“onPause”?
【发布时间】:2019-11-18 15:54:10
【问题描述】:

我是一名 Android 应用开发者。

我以为我知道活动的生命周期。

但是……我现在很困惑。

根据官方文档: https://developer.android.com/guide/components/activities/activity-lifecycle.html#onpause

'onPause' 在部分不可见时被调用。

一个新的、半透明的活动(例如对话框)打开。只要 Activity 仍然部分可见但不在焦点上,它就会保持暂停状态。

所以我认为如果打开一个对话框,那么活动就会暂停。

我做了一些示例代码来证明这一点。

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn.setOnClickListener {
//            1. AlertDialog
//            AlertDialog.Builder(this)
//                .setTitle("TEST")
//                .show()

//            2. DialogFragment
//            val dialog = TestFragment()
//            supportFragmentManager.beginTransaction().add(dialog, "").commit()
        }
    }

    override fun onPause() {
        super.onPause()
        Log.d("TEST", "[LifeCycle] onPause")
    }

当我点击“btn”时,Dialog/DialogFragment 被打开。 但是'onPause'日志没有打印出来。

我很困惑……

官方文档有误吗?

【问题讨论】:

标签: android android-activity lifecycle


【解决方案1】:

它还指出

系统调用此方法作为用户离开您的活动的第一个指示[...]它表明活动不再在前台

您自己的活动中的对话框不会暂停它。只有包含对话框的新活动才会暂停第一个活动。

【讨论】:

  • 你的意思是,官方文档有误? “一个新的、半透明的活动(例如对话框)打开。只要活动仍然部分可见但不在焦点上,它就会保持暂停。”
  • 您的示例没有打开 new 活动。 Dialog 不一定是活动。但是一个活动可以像一个对话。基本上,我只是试图将您的注意力从对话转移到活动上。让按钮启动一个显示对话框的活动。
  • 是的,我同意。我只认为“对话”为 AlertDialog、DialogFragment。
猜你喜欢
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
相关资源
最近更新 更多