我正在尝试从CountDownTimer类的onTick()函数内部显示Toast消息。这个类在服务中运行。
简单地做Toast.maketext(“tag”,“toast message”) - 使应用程序崩溃。
所以我尝试了一个处理程序 - 使用处理程序,应用程序不会崩溃,但我也没有看到Toast消息。任何有关错误的帮助都会有所帮助。
我确信我的倒数计时器正常运行并且正在调用onTick - 我添加了LogCat语句来确认。
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();
}
}
}
}
答案 0 :(得分:2)
尝试使用Activity中的this
而不是使用getApplicationContext():
Toast.makeText(
YourActivity.this,
"This is toast message from inside onTick of the CountDownTimer inside the Service",
Toast.LENGTH_LONG).show();
答案 1 :(得分:0)
尝试使用Looper类的getMainLooper()方法 -
返回应用程序的主循环程序,它位于应用程序的主线程中。 //来自android docs。
您还应该考虑将Activites绑定到服务以处理UI更新。
查看此link以获取更多详细信息。
答案 2 :(得分:0)
public abstract void onReceive (Context context, Intent intent)
在onReceive中你会上下文
在onReceive()上提供给你的Context上调用getApplicationContext(),就像在Activity上调用getApplicationContext()一样。