gpt4 book ai didi

java - Android toast 由于某种原因未显示在 UI 上

转载 作者:行者123 更新时间:2023-12-01 06:33:15 25 4
gpt4 key购买 nike

我所做的与这里讨论的类似: Android BroadcastReceiver within Activity

我的应用程序可以在有或没有 UI 的情况下运行。当屏幕关闭时,它仅在后台工作。当 UI 打开且可见时 - 我想让用户知道刚刚发生了一些事情。

因此,我按照上述主题中的示例并在我的 Activity 上注册了广播接收器。我注册了 onResume 并在 onPause

上取消注册
private BroadcastReceiver uiNeedToBeUpdatedReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
Toast.makeText(BaseActivity.this, "received", Toast.LENGTH_LONG);
}
};

@Override
protected void onPause()
{
Log.d(LOG_TAG, "onPause");
super.onPause();

// TODO: Unregister broadcast receiver
unregisterReceiver(uiNeedToBeUpdatedReceiver);
}

@Override
protected void onResume()
{
Log.d(LOG_TAG, "onResume");
super.onResume();

// TODO: Register for broadcast events
IntentFilter filter = new IntentFilter();
filter.addAction("com.my.uineedtobeupdated");
registerReceiver(uiNeedToBeUpdatedReceiver, filter);

在后台运行的 AsyncTask 中,我执行以下操作:

// Send broadcast - if UI active it will see it:
Intent broadcast = new Intent();
broadcast.setAction("com.my.uineedtobeupdated");
MyApplication.Me.sendBroadcast(broadcast);

嗯,一切正常。我收到广播,并且在调试器中看到我正在点击 Toast 应该显示的行。但我没有看到任何 toast 弹出。

这是线程问题吗?我想如果我收到广播它应该在 UI 线程上?为什么我会观察到这种行为?

最佳答案

不仅创建 Toast 很重要,而且实际显示它也很重要。最简单的方法:

Toast.makeText(BaseActivity.this, "received", Toast.LENGTH_LONG).show();

当然,您也可以:

Toast myToast = Toast.makeText(BaseActivity.this, "received", Toast.LENGTH_LONG);
myToast.show();

关于java - Android toast 由于某种原因未显示在 UI 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com