Java 为什么';t';吐司';安卓系统中的消息工作?无法修复错误,请帮助!

Java 为什么';t';吐司';安卓系统中的消息工作?无法修复错误,请帮助!,java,android,class,crash,toast,Java,Android,Class,Crash,Toast,假设我有以下代码作为android应用程序的后台处理器运行: public class Background extends Service { public void popup (String message, int duration) { Toast.makeText(this, message, duration).show(); } class BackgroundChecker extends TimerTask {

假设我有以下代码作为android应用程序的后台处理器运行:

public class Background extends Service 
{
    public void popup (String message, int duration)
    {
        Toast.makeText(this, message, duration).show();
    }

    class BackgroundChecker extends TimerTask 
    {
        public void run()
        {
            popup("Message!", Toast.LENGTH_LONG); // here
        }
    }
}
当它到达弹出消息,即://此处时,Android告诉我强制退出。我知道问题在于上下文,即
这个
,但我不知道为什么,因为我在Android API告诉我的那个类中扩展了服务。你能帮我弄清楚为什么会发生这种情况以及如何解决它吗?顺便说一下,我也使用了
getApplicationContext()
而不是
this
,但它仍然崩溃=(


谢谢。

我还没有试过,但是让您的服务告诉某个活动敬酒如何,因为服务是一个后台活动,它的上下文似乎不适合敬酒

您还可以尝试扩展应用程序类,在那里有一个toast生成器,然后从您的服务调用

ApplicationExtender variableName = (ApplicationExtender) Background.this.getApplication();              
variableName.toast("message");
您的ApplicationXtender:

public class ApplicationExtender extends Application {

    public void toast(String message){
    Toast.makeText(super.getApplicationContext(),message,Toast.LENGTH_LONG).show();
    }

}
您需要将扩展类添加到清单中,使其工作

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".ApplicationExtender">


我不能保证这会起作用,我还没有试过。

对不起,你说上面的应用程序类是什么意思?你是说背景类吗?对不起,我试过了,但它还是崩溃了。还有其他建议吗?我需要看你的日志给你更多的反馈。嘿,很抱歉这么晚才回复。我决定在一段时间后不使用toast消息我觉得toast应该是在UI中使用的。所以,我使用了状态栏通知,它在后台服务中工作得非常好。谢谢你的帮助。我真的很感激!