android的停止后台服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android的停止后台服务相关的知识,希望对你有一定的参考价值。

后台播放MP3的时候,当activity全部退出之后,后台仍然使用IntentService播放.但是界面没有了,后台服务就无法停止了.
我的思路是,当activty退出时,包装意图到notification,由用户点击停止播放,发送广播,服务接收,自己终结
请问这样实现有问题吗,意图包装要注意哪些问题?
实现中服务压根就没有接收到广播,只要发广播的action和接收的action名字起的相同,不是应该能接收吗
@Override
public void onCreate()
super.onCreate();
receiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
if (intent.getAction().equals("STOPPLAYER"))
if (intent.getIntExtra("msg", 0) == 5)
Log.i("PlayService", "接受到要求停止播放的广播");
PlayerService.this.stop();
stopSelf();
System.exit(0);


;
IntentFilter filter = new IntentFilter();
filter.addAction("STOPPLAYER");
registerReceiver(receiver, filter);
Log.i("PlayService", "广播已经注册");

字数限制......不是action不一样...

  需要安装软件手动结束,比如手机360
  有些程序是无法禁止的,比如屏幕运行,基站链接等等,不要强求,不会影响手机运行的
  手机要先root的,然后再用360手机助手或者优化大师设置就可以了
  关于android的后台一直关不掉的问题,其实完全是因为Android的广播机制。简单来说,当用户安装某一个程序的时候,系统会像面试官一样把这个程序的功能记录下来,当用户在使用手机时,系统状态的变化会产生各种事件,这些事件需要一些程序来处理的时候,系统会发送广播消息,而这些能处理这件事的程序会被启用,究竟是用哪一个程序,这个是由系统默认的程序或者由用户选择的程序来处理这个事件。
  当然还有一些你不需要的程序也一直在自启动,这是因为利益的原因,国内的很多流氓软件都改变了自身程序的优先性,外加增加了终止其他程序的权限,还有增加守护进程的功能,当检测到自己人被干掉了,直接一个复活术让这个程序满血满蓝原地复活。而另外一些社交软件则是为了保证能够及时推送消息,也会做出一些优先权的改变。
参考技术A 安卓只有音乐停止后台服务,其他的都没有停止。放心可以正常 使用。 参考技术B 你去看下IntentService的实现吧。IntentService是在onStart之后,就会自己调用stopSelf方法,把自己给停掉。
像音乐播放器这种,应该用普通的Service,而不是IntentService。IntentService一般是用于耗时操作,像上传下载之类的。追问

这样啊,我以为多个线程好些...怕ui线程被阻塞

参考技术C 没问题的,我就是做我们公司的音乐播放器。不过思路和你的有点不一样,我的思路是后台service启动的时候就已经发到通知栏了,退出activity的时候在通知栏有一行音乐的控制栏。点击的时候直接杀进程!至于你说广播为什么收不到,具体还得看你代码怎么写了,理论是可以的。

你广播action写错了:过滤的是:STOP_PLAYER
而你在广播接受里面的是STOPPLAYER。少个下划线追问

下划线我贴上去刚发现,之前都有"_"也不行,我的意图是:
Intent it = new Intent("STOPPLAYER");
it.putExtra("msg", 5);
PendingIntent intent = PendingIntent.getBroadcast(this, 0, it,
PendingIntent.FLAG_UPDATE_CURRENT);
在activity解绑时候调用

本回答被提问者采纳
参考技术D 看下你的接收广播有没有注册和添加该action

以上是关于android的停止后台服务的主要内容,如果未能解决你的问题,请参考以下文章

无法停止后台服务android

Android 退出app,后台推送的服务也停止了,怎么可以做到不停止后台服务呢?

Android服务在其仍处于活动状态时停止后台处理

当应用程序进入后台时停止后台服务

如何让android的service一直在后台运行

Android - 为视频创建后台服务