Java 应用程序isn';由于服务开始\u继续\u掩码,无法响应
我使用带有多个计时器的Java 应用程序isn';由于服务开始\u继续\u掩码,无法响应,java,android,Java,Android,我使用带有多个计时器的服务类,并希望此服务继续,即使用户终止了应用程序。我尝试了START\u STICKY,但在关闭应用程序后,计时器重新启动(因为我在onstart命令中启动它们) 然后我尝试了START\u CONTINUATION\u MASK,效果很好,但有时过了一段时间,应用程序崩溃,出现错误:“应用程序没有响应。是否要关闭它?”。我不能使用START\u REDELIVER\u INTENT或其他方法,因为在每个onStartCommand上都会创建另一个具有持续时间而不是固定结束
服务
类,并希望此服务继续,即使用户终止了应用程序。我尝试了START\u STICKY
,但在关闭应用程序后,计时器重新启动(因为我在onstart命令中启动它们)
然后我尝试了START\u CONTINUATION\u MASK
,效果很好,但有时过了一段时间,应用程序崩溃,出现错误:“应用程序没有响应。是否要关闭它?”。我不能使用START\u REDELIVER\u INTENT
或其他方法,因为在每个onStartCommand
上都会创建另一个具有持续时间而不是固定结束时间的计时器
有解决这个问题的方法吗
编辑:这是我的onstart命令
@Override
public int onStartCommand (Intent intent, int flags, int startId) {
CountDownTimer cdt = new CountDownTimer(7000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
Log.d("ms till finish:", "" + millisUntilFinished);
}
@Override
public void onFinish() {
timerList.remove(this);
Log.e("amount timers:", "" + timerList.size());
if (timerList.size() == 0) {
stopSelf();
}
}
};
cdt.start();
timerList.add(cdt);
return START_CONTINUATION_MASK;
}
然后我尝试了“开始”和“继续”面膜,效果很好
由于这不是一个有效的返回值,您的结果将因设备和Android操作系统版本而异START\u CONTINUATION\u MASK
顾名思义是一个位掩码,显示哪些位用于服务的延续规则。onStartCommand()
返回值的唯一有效值是START\u STICKY
、START\u NOT\u STICKY
、START\u REDELIVER\u INTENT
或START\u STICKY\u兼容性
希望此服务继续,即使用户终止应用程序
无论您是否喜欢,只要用户和操作系统愿意,都欢迎用户和操作系统停止您的服务
我尝试过启动,但在关闭应用程序后,计时器重新启动(因为我在onstart命令中启动了它们)
将计时器的详细信息存储在一些持久数据存储(文件、数据库、SharedReferences
)中,这样,当进程及其服务重新启动时,您可以根据需要再次启动计时器。要使服务在后台运行,即使用户杀死应用程序或将其从最近的应用程序中删除,应该使用前台服务。任何onStartCommand()
要显示的代码?我想这取决于它。我把它加入了我的问题嘿。你解决了这个问题吗?我也在使用“开始”\u“继续”\u掩码;你找到应用程序崩溃的原因了吗?我的还没有到目前为止,但我想知道你的理由