【问题标题】:Android toast not showing inside onDestroy of ActivityAndroid toast 未在 Activity 的 onDestroy 中显示
【发布时间】:2016-09-14 16:28:04
【问题描述】:

我的要求是当用户从“最近”选项卡中滑动(销毁)我的应用程序时,我想显示一个 toast。 为此,我尝试在 MainActivity 的onDestroy 中显示吐司,但吐司没有出现。我正在使用以下代码:

Toast.makeText(this, "Toast", Toast.LENGTH_SHORT).show();

你能帮忙看看可能是什么原因吗?

【问题讨论】:

  • 它应该是 onTabChanged
  • 您应该发布代码,否则这只是猜测。好吧,我的猜测:把吐司放在 super.onDestroy() 之前
  • 我曾经在 super.onDestroy 之前展示过 toast .. 但没有帮助。这里没有太多代码。我只是在活动的 onDestroy 上举杯。场景是:当我的应用程序运行时,启动了一些后台服务并且正在完成工作。现在,当我的应用程序从最近页面销毁时,我会在 MainActivity 的 onDestroy 中终止我的进程。现在,在终止我的进程之前,我想向用户敬酒,比如“服务已停止”

标签: android android-activity android-toast


【解决方案1】:

上下文变为空,因此 Toast 不会出现。你可以放一个日志看看代码是否在该行执行。

【讨论】:

  • 我已经添加了一个日志。上面这行代码就被执行了
  • 应用程序从后台销毁时很难显示 Toast。你能分享一下你想做什么吗?
  • 当我的应用程序运行时,一些后台服务启动并且工作正在完成。现在,当我的应用程序从最近页面销毁时,我会在 MainActivity 的 onDestroy 中终止我的进程。现在在终止我的进程之前,我想向用户展示一个敬酒,比如“服务已停止”
  • 只需覆盖服务类中的“onTaskRemoved”,该类在服务运行时调用,用户将其从背景中删除。现在把吐司放在“onTaskRemoved”里面 - Toast.makeText(this, "Your Message", Toast.LENGTH_LONG).show();
【解决方案2】:

你可以写这段代码看看logcat

 @Override
protected void onDestroy() {
    super.onDestroy();
    Log.i("OnDestroy", "onDestroy: OnDestroy called");
}

【讨论】:

    【解决方案3】:

    Toast 仅在 onDestroy() 中显示,当您在 onBackPressed() 或 onDestroy() 的开头调用 super.onBackPressed() 时。例如:

    @Override
    public void onBackPressed() {
        moveTaskToBack(false);
    }
    
    @Override
    protected void onDestroy() {
        super.onBackPressed();
        Toast.makeText(getApplicationContext(), "You're offline!", Toast.LENGTH_SHORT).show(); 
        super.onDestroy();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 2011-03-30
      • 2016-04-24
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多