android - 在 IntentService 中创建的 Toast 永远不会消失

标签 android

我有一个 IntentService 可以下载一些文件。问题是我像这样在 IntentService 中创建了一个 Toast

Toast.makeText(getApplicationContext(), "some message", Toast.LENGTH_SHORT).show();

如果我退出应用程序,Toa​​st 将永远不会消失事件。销毁它的唯一方法是终止进程。

我做错了什么?

最佳答案

问题是 IntentService 没有在主应用程序线程上运行。您需要为主线程(在 onCreate() 中)获取 Handler 并将 Toast 作为 Runnable

下面的代码应该可以解决问题:

@Override
public void onCreate() {
    super.onCreate();
    mHandler = new Handler();
}

@Override
protected void onHandleIntent(Intent intent) {
    mHandler.post(new Runnable() {            
        @Override
        public void run() {
            Toast.makeText(MyIntentService.this, "Hello Toast!", Toast.LENGTH_LONG).show();                
        }
    });
}

关于android - 在 IntentService 中创建的 Toast 永远不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3296639/

相关文章:

android - "id == EditorInfo.IME_NULL"到底是什么?

android - 使用MediaPlayer添加声音后,为什么我的Android应用程序崩溃

Android:创建一个在启动它的应用程序中存活的服务

android - 你可以使用没有 App Store Id 的 firebase 动态链接吗

android - 在 2016 年 6 月 20 日之后取消 Google Play IAB 测试购买的订单

android - 如何正确集成 Listener Bindings 和 Lambda 表达式

android - 如何在不使用 GSON 或 android 中的任何其他库的情况下使用改造以字符串形式获得响应

android - 修复 VS Mobile Center 上的 "Error: Publish build artifacts failed with error: Not found PathtoPublish"

java - 带有 “retry”模式的Thread.join

主机上的 Android Wear 表盘设置