2014-03-26 70 views
0

你好,我正在试图在后台运行一个服务,当应用程序被任务管理器销毁时它不会停止。如果服务器中存在数据库中的新插入,则服务的思路是每“x”分钟进行验证。在应用程序被任务管理器杀死后,服务是否仍然可以运行?

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

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

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应该再次运行该服务,如果它被杀死出于某种原因,我知道这是可以做到,因为有些应用程序获得通过任务管理器关闭,仍然得到通知从它作为whatsapp,bbms和其他。请告诉我,如果我错了什么,并感谢您的阅读!


UPDATE:我不是试图打破任何法律或安全规则从Android和IM不试图忽略在设置应用程序的回采服务选项。我希望该用户使用的,当你按下回家了,而出现的界面后听在我的情况下,新进入的“事件”嵌入式服务继续运行:

enter image description here


UPDATE:很抱歉对这个应用程序的谈论很多,但是我可以用它作为例子。在whatsapp中,当我通过界面显示的界面显示流程和服务被终止时,但在几秒钟后他们重新启动,这正是我想要做的,以保持用户了解数据库事件。从设置你仍然可以停止服务没有问题,甚至我可以在应用程序本身的选项停止notifiying。

OnDestroy()方法中的一个错误实现调用服务的一个实例,以便在销毁后重新启动?


UPDATE:韦尔普看起来像我的机构仍然在后台运行后,我关闭应用程序。我只需要在我的服务设计上工作,不会浪费电池寿命和资源。另外我使用log.i()检查服务是否正在运行,看起来像主进程关闭时我不能使用日志或吐司只是通知(仍未实现),因为服务在那里运行只是不会显示日志。


UPDATE:现在正在使用的工作用startForeground(0,NULL)。将来,我将发送一个通知,以显示数据库事件发生时的情况,并调用startForeground(1,notification)。

+0

'忽略任务管理器造成的破坏' - 我希望不会,这将是一个巨大的安全问题。 –

+0

@MartinJames有没有办法在不影响安全性的情况下这样做?即使应用程序本身已关闭并且未在taskmanager中运行,我也看到了使用通知的应用程序。 – AmirG

+0

仅仅不运行的应用程序可以从某些触发器开始。但是,在用户明确启动之前,用户从设置菜单中杀死的内容不能执行任何操作。 –

回答

2

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

+0

Welp看起来像我的服务仍然在后台运行后关闭应用程序。我只需要在我的服务设计上工作,不会浪费电池寿命和资源。另外我使用log.i()检查服务是否正在运行,看起来像主进程关闭时我不能使用日志或吐司只是通知(仍未实现),因为服务在那里运行只是不会显示日志。 – AmirG

0

我在开发我的第一款安卓游戏时遇到了类似这样的问题;强制停止是杀死它的唯一方法。

START_NOT_STICKY当您将应用程序从任务管理器中滑开时,会终止后台服务。顾名思义,START_STICKY就是“粘性”,意思是即使应用程序消失,它也会坚持android系统。

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

+0

感谢您的编辑。我从来没有回答过一个问题!始终打开学习。 – InstaSteve

相关问题