首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于服务START_CONTINUATION_MASK,应用程序没有响应

由于服务START_CONTINUATION_MASK,应用程序没有响应
EN

Stack Overflow用户
提问于 2015-07-02 13:50:52
回答 2查看 1.3K关注 0票数 2

我使用一个带有多个定时器的Service类,并且希望这个服务能够继续,即使用户杀死了这个应用程序。我尝试了START_STICKY,但是在关闭应用程序之后,计时器重新启动(因为我在onStartCommand中启动了它们)。

然后我尝试了START_CONTINUATION_MASK,它运行得很好,但有时应用程序会出现错误:“应用程序没有响应。您想关闭它吗?”我不能用START_REDELIVER_INTENT或某物。否则,因为在每个onStartCommand上创建的另一个计时器具有持续时间,而不是固定的结束时间。

有解决这个问题的办法吗?

编辑:这是我的onStartCommand

代码语言:javascript
复制
@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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-02 14:01:45

然后我试了一下START_CONTINUATION_MASK,效果很好

因为这不是一个有效的返回值,您的结果将因设备和Android操作系统版本而异。顾名思义,START_CONTINUATION_MASK是位掩码,显示服务的延续规则使用哪些位。来自onStartCommand()的返回值的唯一有效值是START_STICKYSTART_NOT_STICKYSTART_REDELIVER_INTENTSTART_STICKY_COMPATIBILITY

希望此服务继续进行,即使用户杀死了该应用程序。

无论您喜欢与否,只要用户和操作系统愿意,欢迎用户和操作系统停止服务。

我尝试了START_STICKY,但是在关闭应用程序之后,计时器重新启动(因为我在onStartCommand中启动了它们)。

将定时器的详细信息存储在某些持久数据存储区(文件、数据库、SharedPreferences)中,以便在进程及其服务重新启动时,您可以根据需要再次启动定时器。

票数 3
EN

Stack Overflow用户

发布于 2017-08-07 13:11:31

为了保持服务在后台运行,即使用户杀死了应用程序或将其从最近的应用程序中删除,您应该使用前台服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31186478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档