【发布时间】:2014-12-16 13:53:50
【问题描述】:
我想在收到推送通知时启动倒计时。
我可以成功收到通知。
现在我想问一下,当收到通知并且我的应用程序处于后台或前台时,是否可以在 BroadcastReceiver 的 onReceive 中启动倒数计时器?
简单地说,无论应用程序是否在前台,计时器都应该启动。 当计时器完成时,它应该向服务器发送一些数据。 而且我需要在倒计时期间应用程序进入前台后立即在文本视图中显示剩余时间。
我正在添加一些代码,请帮助我。
这是启动计时器的代码,该函数在 onReceive 中调用。
void startOrderCountDown() {
CountDownTimer orderCountDown = new CountDownTimer(40000, 1000) {
public void onTick(long millisUntilFinished) {
Constant.remainingTimeOfOrder = millisUntilFinished / 1000;
Log.v("Timer", "Time left: " + millisUntilFinished
/ 1000);
}
public void onFinish() {
new Thread(new Runnable() {
@Override
public void run() {
String dr_id = myPreferences.getDRIVERID();
String res = new ServerConnection()
.updateOrderMissedRejected(
Constant.UPDATE_MISSED_REJECTED_ORDER,
dr_id, "", "0");
Log.e("Timer", "finished..." + res);
}
}).start();
}
};
orderCountDown.start();
}
但是当通知到达时,它只是在 logcat 中打印“剩余时间:39”。
提前致谢。
【问题讨论】:
-
@MichaelShrestha 正如我发布的那样,我也在做类似的事情,但问题是计时器只调用一次 onTick 方法。并且logcat中只打印了一行。
-
尝试调试你的接收器类...
-
您需要使用不会被操作系统停止的计时器来启动服务
-
@SpyZip 没有别的办法吗?