如果用户在设置中停止或关闭了我的应用程序服务,我该如何重新启动它?

3

当未经授权的人从设备设置中终止服务时,有什么方法可以重新启动我的服务?当授权用户想要停止服务时,我会提供一个需要密码的界面。


什么使用户成为“未经授权的人”? - Phil
@phil 对不起我说话的方式,这里所指的未经授权的人是指设备所有者以外的任何人。 - Lenin
3个回答

5
建议一种方法来在用户(未经授权的人)从设备设置中杀死服务时重新启动我的服务。
他们并不是“未经授权的”。它是他们的设备,不是你的。
在Android 3.1(可能稍早版本),您将无法通过任何手段重新启动您的服务,直到用户启动了您的一个活动。如果用户强制停止您的进程,则会阻止您再次运行,直到用户手动启动您。
提供一个需要密码的UI来停止服务将没有效果。无论您喜欢与否,用户都可以通过任务管理器或“管理服务”屏幕停止您的服务。请尊重用户的意愿。

抱歉我的表述方式不太好,这里所说的未经授权的人是指设备所有者以外的任何人。 - Lenin
2
@lenin:用户应该使用设备自带的锁屏来保护他们的设备。作为SDK开发人员,你应该假设持有设备的人是它的所有者。 - CommonsWare

3
很抱歉,您将会与系统作斗争来实现这一点。该系统是为普通消费者拥有的设备而建立的。如果用户想要停止您的应用程序,您很难阻止他们停止它。即使您成功地想出了一些有效的方法来重新启动您的服务,可能还会有任务杀手应用程序会察觉到您并每次重新启动时开始自动关闭您。
底线是,这是他们的设备,他们可以选择运行什么和不运行什么。我理解需要密码来停止某些东西的完全合理的用例,但必须在系统级别处理才能达到100%的效果。

0

如果需要重新启动任何在运行时终止的服务,则使用以下命令

   public int onStartCommand(Intent intent,int flags,int startId)
    {
       .........//your service coding //
       ........................
       return Service.START_STICKY
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接