在 Activity 出现之前,使用应用程序上下文显示 Toast

3
在应用程序类的onCreate方法中,我将其实例设置为静态字段,然后通过此上下文显示所有应用程序中的Toast。一切工作良好,除了一个问题,在某些地方,第一个活动甚至没有出现之前就可以显示一个Toast,但Toast从未出现或者有时只是闪烁。我认为这是因为活动还没有显示或绘制?还是我漏掉了什么。

编辑: 更像是在Application类的onCreate方法中显示toast。

编辑2:

public class TestApplication extends Application {

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

我在谈论ApplicationonCreate方法。 - xmen
2
当Activity启动且应用程序未加载时,将调用两个onCreate()方法。但对于Activity的后续启动,将不会调用应用程序的onCreate()方法。 - Linga
2个回答

0
在绘制布局资源之前制作一个Toast,只需按照以下步骤操作。
//put this code before your setContentView(R.layout.your_layout);

  Toast.makeText(yourclassName.this,"your text here",5000).show();

好的,考虑一件事情。如果你想让这个Toast在加载你的Activity之前显示并通知用户一些信息,那么这可能并不总是可能的。因为,Toast的显示时间只有纳秒/毫秒级别,而你的布局也正在加载中。此外,在真实设备和模拟器上情况完全不同。这可能是你看到Toast消息闪烁的原因。只需在真实设备上运行它,你就会看到差异。

希望能对你有所帮助。


1
我只想在应用程序启动时显示“Toast”,无论是否显示其他内容。而且“Toast”不会从“Application”的onCreate(而不是ActivityonCreate)中出现。有时它只是闪烁。PS:实际上,我首先在真实设备上进行测试,然后在模拟器上进行测试。 - xmen

0
如果您想在用户手动启动应用程序之前显示一个“Toast”,可以注册一个BroadcastReceiver来监听BOOT_COMPLETED系统广播,然后启动一个Service来处理您的Toast
您会发现许多示例如何执行此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接