如何杀死音乐服务?

Posted

技术标签:

【中文标题】如何杀死音乐服务?【英文标题】:how to kill music service? 【发布时间】:2011-11-27 16:39:23 【问题描述】:

我正在制作一个关于终止正在运行的服务的简单活动。 我找到了一种方法“killBackgroundProcesses”来杀死后台应用程序或服务。 我尝试杀死后台应用程序和服务。 正在运行的应用程序和一些服务被很好地杀死,但尤其是音乐服务永远不会被杀死......

我想制作一个简单的应用程序,它正在杀死背景音乐服务。 该应用程序只有一个按钮(名称为“Kill Music”) 如果用户点击按钮,背景音乐应该被杀死。

音乐由默认音乐播放器播放。 我怎样才能杀死背景音乐? 有没有其他方法可以杀死音乐服务?

这是我尝试过的代码.. 任何建议将不胜感激。 谢谢。

public class android32_TaskKillerActivity extends Activity 
ActivityManager manager;  
List<RunningServiceInfo> list;
String str="";  //to contain running Servies name and write on Toast message.

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button bt = (Button)findViewById(R.id.button1);  //to kill All Services
    manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    list = manager.getRunningServices(300);  //save current Servies to List

    bt.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v) 
            for(int i=0; i<list.size(); i++)
                RunningServiceInfo info = list.get(i);
                String temp = info.service.getPackageName();
                     str += temp+"\n";
                manager.killBackgroundProcesses(temp);//killing services one by one to the end.

            
            Toast.makeText(getBaseContext(), "All Services are finished \n" + str, 3000).show();

        
    );



【问题讨论】:

您正在说明不允许应用再做此类事情的原因。 ;) 您只想终止音乐服务,但您的代码正在使用 all 正在运行的服务的列表。更糟糕的是,它会传递一个陈旧的运行服务列表,该列表在首次创建活动时填充。任务杀手应用程序有导致其他应用程序故障(包括闹钟!)的历史,这导致用户非常沮丧,他们无法简单地知道原因。应用程序以这种方式破坏系统的能力已被移除。 【参考方案1】:

我想制作一个简单的应用程序,它正在杀死背景音乐服务。该应用程序只有一个按钮(名称为“Kill Music”)如果用户单击该按钮,则应该杀死背景音乐。

这是不可能的。

killBackgroundProcesses() 将杀死 后台 进程。但是,“背景”一词(以及相反的“前景”)有多种定义。音乐应用已调用 startForeground() 向 Android 表明它是前台用户体验的一部分,如果可能,不应因内存不足而关闭。

引用killBackgroundProcesses() 文档:

这与内核杀死那些进程以回收内存相同;系统将在未来根据需要重新启动这些进程。

因此,killBackgroundProcesses() 不应终止使用 startForeground() 的服务,例如音乐应用。

用户可以通过音乐应用程序停止音乐应用程序,或者如果他们是一个特别陌生的用户,可以通过设置应用程序。

【讨论】:

以上是关于如何杀死音乐服务?的主要内容,如果未能解决你的问题,请参考以下文章

【iOS】后台播报TTS(防止APP后台被杀死)

退出/暂停应用程序时如何暂停背景音乐服务?

如何确认服务是前台服务

如何从 Sonos 家庭获取音乐源列表?

如何在不显示通知的情况下 startForeground()?

Spotify的在线服务如何流式传输音乐,使其不可下载[关闭]