【问题标题】:Service: onTaskRemoved not called if started with bindService服务:如果使用 bindService 启动,则不会调用 onTaskRemoved
【发布时间】:2014-06-09 19:53:45
【问题描述】:

我有一个服务,其中实现了onTaskRemoved() 方法。
当服务以startService() 启动时,当应用程序通过滑动从最近的应用程序列表中删除时,函数onTaskRemoved() 被调用。

但如果服务以bindService() 启动,则永远不会调用onTaskRemoved()

在使用bindService() 启动应用程序后,通过滑动从最近的应用程序列表中删除应用程序时,如何进行服务调用onTaskRemoved()

如果开始,Android 会调用以下生命周期方法:

1. bindService():
Activity﹕ onCreate()
CustomService﹕ onCreate()
CustomService﹕ onStart()
CustomService﹕ onStartCommand()
CustomService﹕ onBind()
// Here we swipe to remove app from recent-apps-list
CustomService﹕ onTrimMemory()

2. startService():
ActivityA﹕ onCreate()
CustomService﹕ onCreate()
CustomService﹕ onStart()
CustomService﹕ onStartCommand()
CustomService﹕ onBind()
// Swipe to remove app from recent-apps-list
CustomService﹕ onTrimMemory()
CustomService﹕ onTaskRemoved() // <===== 
CustomService﹕ onUnbind()

【问题讨论】:

  • 重要提示:每次应用程序进入后台时都会调用onTrimMemory(),您无需“滑动删除”应用程序即可触发它。如果您按下主页按钮,就会发生这种情况。所以你的评论具有误导性。
  • 试试这个技巧(工作)-stackoverflow.com/a/49489478/3879847

标签: android android-service android-service-binding


【解决方案1】:

可以绑定或启动服务,或两者兼而有之。这取决于你如何实现 onStartCommandonBind 说文档。

http://developer.android.com/guide/components/services.html

但是,如果您希望您的服务在 IBinder 上同时保持并与客户交谈,那么只需启动该服务,然后绑定到它。

startService(new Intent(context, CustomerService.class));
// Bind to the service
bindService(new Intent(context, CustomerService.class),
                        mConnection, Context.BIND_AUTO_CREATE);

编辑 20220314。“操作系统的未来版本”可能会在没有通知卡供用户与服务交互时终止服务。

... 自从我回答这个问题以来发生了很多变化,我最近获得了投票,所以我来了。您希望您的服务在后台运行,有一个通知正在进行,并且用户可以在通知中与服务进行交互。您已经看到了音乐和视频通知上的播放暂停控件。如果没有通知,操作系统可能会终止您的服务。

【讨论】:

  • 我也在做同样的事情并且 onStartCommand() 也被调用了,但是服务没有在后台运行。应用程序销毁然后服务也销毁..你能帮忙吗?
  • 我需要查看更多您的代码来提供帮助。问一个问题发布一些代码。 SO这里的人会提供帮助。
  • 它的工作有点,当应用程序销毁时,服务实际上停止并再次重新启动。它的 onCreate() 和 onStartCommand() 再次调用,我只是希望服务不要停止并再次重新启动。我只是希望它在后台连续运行。知道如何实现这一目标吗?
  • 自从我回答这个问题后发生了很多变化。
猜你喜欢
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多