为什么没有“面包”消息的工作,这是Android?不能修复的bug,请帮助!

StackOverflow https://stackoverflow.com/questions/4024620

想象我有以下代码运行作为背景处理器的机器人应用程序:

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这将工作,我还没有尝试过。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top