【问题标题】:Show toast with Application context before Activity appears在 Activity 出现之前显示带有应用程序上下文的 toast
【发布时间】:2014-01-30 06:13:06
【问题描述】:

在Application 类的onCreate 中,我将其实例设置为静态字段,然后通过此上下文显示所有应用程序Toasts。一切都很好,除了一件事,在某些地方,Toast 甚至可以在第一个活动出现之前显示,但Toast 永远不会出现,有时只是闪烁。我认为是因为 Activity 尚未显示或绘制?或者我错过了什么。

编辑: 更像是来自onCreate 的Application 类的吐司

编辑 2:

public class TestApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();
    Toast.makeText(this, "Test from App", Toast.LENGTH_LONG).show();
    }
}

【问题讨论】:

  • 我说的是onCreate of Application。
  • 当 Activity 启动且应用程序未加载时,两个 onCreate() 方法都会被调用。但是对于后续的Activity启动,应用的onCreate()将不会被调用。

标签: android android-toast


【解决方案1】:

如果您想显示Toast 而不需要用户手动启动应用程序,您可以注册一个BroadcastReceiver 来监听 BOOT_COMPLETED 系统广播,然后启动一个Service 来处理您的Toasts .

你会发现很多 examples 告诉你如何做到这一点。

【讨论】:

    【解决方案2】:

    要在绘制布局资源之前制作 Toast,只需执行以下操作。

    //put this code before your setContentView(R.layout.your_layout);
    
      Toast.makeText(yourclassName.this,"your text here",5000).show();
    

    好吧,考虑一件事。如果您希望在加载活动之前显示此 toast 并通知用户一些消息。那么它可能并不总是可能的。因为,时间 Toast 显示的时间只有纳秒/毫秒的几分之一,您的布局也正在加载。此外,当您在真实设备和模拟器上时,情况完全不同。这可能是因为您收到了 Toast 消息。只需在真实设备上运行它,您就会看到差异。

    希望有帮助

    【讨论】:

    • 我只想在应用程序启动时显示Toast,无论是否显示其他内容。而Toast 不会出现在onCreate 的Application(不是Activity)中。有时它只是闪烁。 PS:其实我先在真机上测试,然后在模拟器上测试。
    猜你喜欢
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多