Android 无法从倒计时(在服务内部运行)的单击中显示Toast消息
我试图在CountDownTimer类的onTick()函数中显示Toast消息。此类正在服务中运行 简单的Toast.maketext(“标记”、“Toast消息”)-使应用程序崩溃 所以我尝试了一个处理程序——使用该处理程序,应用程序不会崩溃,但我也没有看到toast消息。任何关于错误的帮助都是有帮助的 我确信我的倒计时计时器运行正常,onTick正在被调用——我已经添加了LogCat语句来确认这一点Android 无法从倒计时(在服务内部运行)的单击中显示Toast消息,android,handler,toast,countdowntimer,Android,Handler,Toast,Countdowntimer,我试图在CountDownTimer类的onTick()函数中显示Toast消息。此类正在服务中运行 简单的Toast.maketext(“标记”、“Toast消息”)-使应用程序崩溃 所以我尝试了一个处理程序——使用该处理程序,应用程序不会崩溃,但我也没有看到toast消息。任何关于错误的帮助都是有帮助的 我确信我的倒计时计时器运行正常,onTick正在被调用——我已经添加了LogCat语句来确认这一点 public class MyServicelockCountdownTimer exte
public class MyServicelockCountdownTimer extends CountDownTimer {
public FBServicelockCountdownTimer(long millisInFuture,
long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
}
@Override
public void onTick(long millisUntilFinished) {
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(
getApplicationContext(),
"This is toast message from inside onTick of the CountDownTimer inside the Service",
Toast.LENGTH_LONG).show();
}
});
} else {
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
}
}
尝试使用Looper类的getMainLooper()方法,该方法-
返回应用程序的主循环器,它位于应用程序的主线程中。//来自android文档
您还应该考虑绑定活动以处理UI更新。
请检查此项以了解更多详细信息。尝试使用活动中的
this
,而不是使用getApplicationContext()
在onReceive中,您将看到上下文
在onReceive()中为您提供的上下文上调用getApplicationContext(),就像在活动上调用getApplicationContext()。我假设您的处理程序是附加到主线程循环器上创建的?您是否将服务绑定到活动?检查此线程这是在服务中,而不是在活动中尝试此链接可能对您有帮助[链接不可用没有onReceive
Toast.makeText(
YourActivity.this,
"This is toast message from inside onTick of the CountDownTimer inside the Service",
Toast.LENGTH_LONG).show();
public abstract void onReceive (Context context, Intent intent)