如何杀死音乐服务?

时间:2011-11-27 16:39:24

标签: android service

我正在制作关于杀死正在运行的服务的简单活动。 我找到了一个方法“killBackgroundProcesses”来杀死后台应用程序或服务。 我试图杀死后台应用程序和服务。 正在运行的应用程序和一些服务很好,但特别是音乐服务从未被杀死......

我想创建一个杀死背景音乐服务的simeple应用程序。 该应用程序只有一个按钮(名称是“杀死音乐”) 如果用户单击该按钮,则应该杀死背景音乐。

默认音乐播放器播放音乐.. 我怎么能杀死背景音乐? 还有其他杀死音乐服务的方法吗?

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

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();

        }
    });

}
}

1 个答案:

答案 0 :(得分:3)

  

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

这是不可能的。

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

引用killBackgroundProcesses()文档:

  

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

因此,killBackgroundProcesses()不应该杀死使用startForeground()的服务,例如音乐应用。

用户可以通过音乐应用程序停止音乐应用程序,如果他们是特别奇怪的用户,则可以通过“设置”应用程序停止。