如果以bindService启动,则不调用ontaskremove



我有一个已经实现了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()

服务可以被绑定或启动,也可以同时启动。这取决于你如何实现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。os的未来版本;当没有通知卡供用户与服务交互时,可能会终止服务。

…自从我回答这个问题以来,很多事情都发生了变化,我最近投票了,所以我在这里。你希望你的服务在后台运行,有一个通知,并有一种方式让用户在通知中与服务交互。你已经看到了音乐和视频通知的播放暂停控制。如果没有通知,操作系统可能会终止您的服务。

相关内容

  • 没有找到相关文章

最新更新