如何杀死音乐服务?
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()
的服务,例如音乐应用。
用户可以通过音乐应用程序停止音乐应用程序,或者如果他们是一个特别陌生的用户,可以通过设置应用程序。
【讨论】:
以上是关于如何杀死音乐服务?的主要内容,如果未能解决你的问题,请参考以下文章