繁体   English   中英

应用程序被任务管理器杀死后,该服务是否仍然可以运行?

[英]Is it possible that the service still runs after the app got killed with task manager?

你好我正在试图在后台运行一个服务,当任务管理器销毁应用程序时它不会停止。 如果我在服务器中获得了数据库中的新插入,则服务的想法是每隔“x”min验证一次。

即使我关闭了应用程序,但是当我使用任务管理器销毁我的应用程序时,所有线程也都关闭,该服务运行良好。

所以我想知道它是否有可能运行一个在后台永远询问的线程,除非用户在应用程序本身取消它,忽略任务管理器造成的破坏所以将来我可以使用通知栏告诉用户新的插入发生在数据库中。

Tryed:

public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub

               askServer(); // i made a timertask that ask every "x" minute 


     return START_STICKY;
}

当我读取START_STICKY应该再次运行该服务,如果它因某种原因被杀死,我知道这可以完成,因为一些应用程序被taskmanager关闭,仍然从whatsapp,bbms和其他人收到它的通知。 如果我错了,请告诉我,谢谢你的阅读!


更新 :我不是试图破坏Android的任何法律或安全规则,我不是试图忽略设置中应用程序的停止服务选项。 我希望在用户使用按住home一段时间后出现的界面后,在我的情况下监听新传入“事件”插入的服务继续运行:

在此输入图像描述


更新 :很抱歉和很多关于这个应用程序的讨论,但我可以作为一个例子。 在whatsapp中,当我通过我在上面显示的界面关闭应用程序时,进程和服务被杀死,但几秒后他们重新启动,这正是我想要做的事情,以便让用户了解数据库事件。 从设置你仍然可以毫无问题地停止服务,甚至我可以将选项放在应用程序本身停止通知。

是一个糟糕的实现调用OnDestroy()方法的服务实例,所以它在销毁后重新启动?


更新 :在关闭应用程序后,welp看起来我的服务仍然在后台运行。 我将不得不处理我的服务设计,以免浪费电池寿命和资源。 此外,我正在使用log.i()检查服务是否正在运行,看起来像主进程关闭时我不能使用日志或吐司只是通知(仍未实现),因为服务在那里运行只是不会显示在记录。


更新 :现在正在使用startForeground(0,null)。 在将来,我将发送一个通知,以显示数据库上的事件何时构建并调用startForeground(1,通知)。

有关服务,请查看设置 - >应用程序 - >服务。 并查看它是否正在运行。 但是,设计不良的服务可能会更频繁地运行或执行同步操作。 所以是的,这是可能的。

在开发我的第一个Android游戏时,我遇到了类似的问题; 强制停止是杀死它的唯一方法。

当您将应用程序从任务管理器中START_NOT_STICKYSTART_NOT_STICKY后台服务。 顾名思义, START_STICKY是“粘性的”,这意味着即使应用程序消失,它也会粘在Android系统上。

无论如何,这是我的经验。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM