Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序isn';由于服务开始\u继续\u掩码,无法响应_Java_Android - Fatal编程技术网

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掩码;你找到应用程序崩溃的原因了吗?我的还没有到目前为止,但我想知道你的理由