【问题标题】:Android: Start my service when I close my appAndroid:当我关闭我的应用程序时启动我的服务
【发布时间】:2016-07-06 15:52:54
【问题描述】:

基本上我有一项服务每 30 分钟检查一次我的位置,当位置发生变化时,会弹出一个基本通知。我只在我的应用程序关闭时才需要此服务(也停止/暂停)。所以我问我应该在我的活动中从哪里开始我的服务?

我想要类似于 Facebook、Instagram 的东西,而且大多数应用程序都有......从后台运行的服务,当弹出通知时,只需打开 de 应用程序。当应用程序打开时,服务不应该做任何事情。

我尝试了 onDestroy() 方法(在我的 MainActivity 中)但没有成功,并且 onStop() 方法也没有。

我自己解释一下吗?

谢谢!!

【问题讨论】:

  • 我认为这不是一个好主意。我的意思是,如果有人只是打开-关闭或反之亦然您的应用程序,您的服务想法不会有太大帮助...
  • 您可以随时运行您的服务来获取位置...

标签: android service background


【解决方案1】:

应使用AlarmManager(或JobScheduler)安排重复任务。

这通常在BroadcastReceiver 中完成,它对BOOT_COMPLETED 作出反应。

如果您想在活动处于活动状态时取消此类作业,请在 onResumeonPause 中调用 AlarmManager 上的相应方法。

【讨论】:

【解决方案2】:

如果您希望您的服务在关闭应用程序后始终在后台运行,您需要将您的服务设为STICKY,您可以在OnStartCommand 中执行此操作

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i("LocalService", "Received start id " + startId + ": " + intent);
    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
}

请注意,它返回START_SICKY,它告诉操作系统在它有足够的内存后重新创建服务,并以空意图再次调用 onStartCommand()。

另请阅读application:persistent,即“应用程序是否应始终保持运行”。这更麻烦 - 系统会尽量不杀死您的应用程序,这会影响系统中的其他应用程序,您应该小心使用它。

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多