为什么没有“面包”消息的工作,这是Android?不能修复的bug,请帮助!
题
想象我有以下代码运行作为背景处理器的机器人应用程序:
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
}
}
}
当它到达弹出消息即//这里,机器人告诉我强制退出。我知道,这个问题是与语境,即this
,但我不知道为什么,因为我已经在类的Android API告诉我要延长服务。你能不能帮我找出为什么发生这种情况,如何解决?顺便说,代替this
的我用getApplicationContext()
以及,但它仍然崩溃=(。
感谢您。
解决方案
我还没有尝试这样做,但如何让你的服务告诉的活动做了烤面包,因为服务是后台活动,好像它的上下文难道不工作要做敬酒。
别的东西,你可以尝试是扩展应用程序类,并且都举杯发电机在那里,然后从您的服务请求。
ApplicationExtender variableName = (ApplicationExtender) Background.this.getApplication();
variableName.toast("message");
您ApplicationExtender:
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">
我不能garantee这将工作,我还没有尝试过。
不隶属于 StackOverflow