连续两次祝酒词获胜';在Android Oreo上,不显示他们在什么时候被精确地按对方的顺序呼叫

连续两次祝酒词获胜';在Android Oreo上,不显示他们在什么时候被精确地按对方的顺序呼叫,android,kotlin,android-8.0-oreo,android-toast,Android,Kotlin,Android 8.0 Oreo,Android Toast,下面的代码正确地显示了运行Android版本低于27的设备上的两条连续消息,但在Android版本27上,它只显示了第一条Toast的消息 安卓27有什么变化使得它的行为有所不同 两个连续的Toast消息的间隔是否应大于特定时间 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)

下面的代码正确地显示了运行
Android版本低于27的设备上的两条连续消息,但在
Android版本27
上,它只显示了第一条
Toast
的消息

安卓27有什么变化使得它的行为有所不同

两个连续的Toast消息的间隔是否应大于特定时间

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

    Toast.makeText(this, "The onCreate method is called", Toast.LENGTH_SHORT).show()
}

override fun onResume() {
    super.onResume()

    Toast.makeText(this, "The onResume method is called", Toast.LENGTH_SHORT).show()
}

您需要编写一个跟踪状态的小程序
我使用API 26和API 27运行,只有当您从另一个活动返回时才会调用这行代码

Toast.makeText(this, "The onResume method is called", Toast.LENGTH_SHORT).show()
享受

好的,下面是如何编写一个跟踪状态的小程序
这是为您提供输出设置logcat以调试标记的活动

open class BaseActivity : AppCompatActivity() {

val TAG = "LifeCycle"

override fun onCreate(savedInstanceState: Bundle?) {
    Log.d(TAG, "${javaClass.simpleName} OnCreate")
    println("========================== OnCreate")
    super.onCreate(savedInstanceState)
}

override fun onStart() {
    Log.d(TAG, "${javaClass.simpleName} OnStart")
    println("========================== OnStart")
    super.onStart()
}

override fun onResume() {
    Log.d(TAG, "${javaClass.simpleName} OnResume")
    println("========================== OnResume")
    super.onResume()
}

override fun onRestart() {
    Log.d(TAG, "${javaClass.simpleName} OnRestart")
    println("========================== OnRestart")
    super.onRestart()
}

override fun onPause() {
    Log.d(TAG, "${javaClass.simpleName} OnPause")
    println("========================== OnPause")
    super.onPause()
}

override fun onStop() {
    Log.d(TAG, "${javaClass.simpleName} OnStop")
    println("========================== OnStop")
    super.onStop()
}

override fun onDestroy() {
    Log.d(TAG, "${javaClass.simpleName} OnDestroy")
    println("========================== OnDestroy")
    super.onDestroy()
}
}

然后,当您从一个活动类导航到另一个活动类时,您将获得输出
如果您在课堂上使用此标题

class WelcomeActivity : BaseActivity() {

我想你问错了。问题是调用两个
Toast
消息(即使在一种状态下-例如在
onCreate
中调用两个
Toast
)不会显示第二个
Toast
,而只会显示第一个
Toast
消息。我已经使用
Log
跟踪了应用程序的生命周期状态,一切正常。@MehrdadSComputer让我试着理解一下。如果使用API 27,两个都显示,但如果更改为API 26,则只显示一个。如果我在具有Android API 27的模拟器上运行代码,它只显示第一条Toast消息,但如果我在具有Android API 25的模拟器上运行相同的代码,它会依次显示两条Toast消息。嗨@Mehrdad,我在安卓9上也面临同样的问题。你找到解决办法了吗?很遗憾,谢谢你。但考虑到我不再从事Android开发了。也许从那时起,这个问题已经得到了解决。