Java 为什么';t';吐司';安卓系统中的消息工作?无法修复错误,请帮助!
假设我有以下代码作为android应用程序的后台处理器运行: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 {
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中使用的。所以,我使用了状态栏通知,它在后台服务中工作得非常好。谢谢你的帮助。我真的很感激!