【发布时间】: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 正在运行的服务的列表。更糟糕的是,它会传递一个陈旧的运行服务列表,该列表在首次创建活动时填充。任务杀手应用程序有导致其他应用程序故障(包括闹钟!)的历史,这导致用户非常沮丧,他们无法简单地知道原因。应用程序以这种方式破坏系统的能力已被移除。