你可以设置个全局变量 
static boolean isBehind = false;
然后在onResume方法中
将这个变量设置成false;
在onPause方法中
将这个变量设置成true;
在onStop方法中进行判断,
if(isBehind = false)
    stopService;
当你跳转到另一个activity的时候,
具体的activity生命周期如图先执行第一个activity的onPause
此时isBehind = true;
然后执行第二个activity的onResume
此时此时isBehind = false;
当第二个activity is running的时候
第一个activity才会onStop
此时不会停止服务
当按home键的时候,就是直接onPause onStop,然后停止服务。这种方法很笨,看看别的大神的简单方法。。

解决方案 »

  1.   

    那就建一个MyActivity,重写相关方法。
    很多时候看着复杂,实现起来简单,看着简单,实现起来复杂,还是看方法。
      

  2.   

    你可以试试 onbinder 那种机制的 服务  服务是随着 activity 的结束而结束的
      

  3.   


    好像也不行,因为现在结束程序是可以正常停止音乐的,问题就处在按HOME按钮
      

  4.   

    你可以试试 及时你按home键 要触发 onstop的 你在里面 停止就OK
      

  5.   

    重写onBackPressed方法即可 @.@!
      

  6.   


    onBackPressed是back按钮吧?我需要获取HOME按钮
      

  7.   

    监控一下home键可以吗public boolean onKeyDown(int keycode, KeyEvent event) {
    // TODO Auto-generated method stub
    if(keycode==KeyEvent.KEYCODE_HOME){

    return true;
    }else{
    return super.onKeyDown(keycode, event);}
    }
      

  8.   

    在4.0下这段代码已经监听不到HOME按钮了
    if(keycode==KeyEvent.KEYCODE_HOME){}
      

  9.   

    提供两个思路:
    一:直接在service中控制音乐的开与关,设置一个标志位flag,当flag=true时停止音乐,反之则不做处理。同时,在你所有的activity的onStart()、onPause()(不能在onStop()中,因为onStop()的执行在新的activity执行onStart()之后)方法中为service提供状态flag,当onPause()设定为true,onStart()设定为flase,然后,再在onStop()中进行停止音乐的操作,因为onStop()执行在onStart()之后,所以只要程序有act在前台,能保证始终有音乐播放
    二、按home键、返回键的时候给出提示框,用户选择确定之后停止音乐,另外,监听home是不能在onKeyDown(int keycode, KeyEvent event)中监听的,在这个方法中监听,不光是4.0,2.x中也监听不到,要监听home,必须有特殊处理以及相应的权限,这个具体咋处理我一时想不起来,lz自己去查查吧
      

  10.   


    第二种方法如果监听不到HOME按钮,也没办法弹出提示框
      

  11.   

    app中对于HOME键广播事件的接收:
    首先,自定义一个BroadcastReceiver:class HomeKeyEventBroadCastReceiver extends BroadcastReceiver {  
      
        static final String SYSTEM_REASON = "reason";  
        static final String SYSTEM_HOME_KEY = "homekey";//home key  
        static final String SYSTEM_RECENT_APPS = "recentapps";//long home key  
          
        @Override  
        public void onReceive(Context context, Intent intent) {  
            String action = intent.getAction();  
            if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {  
                String reason = intent.getStringExtra(SYSTEM_REASON);  
                if (reason != null) {  
                    if (reason.equals(SYSTEM_HOME_KEY)) {  
                        // home key处理点  
                          
                    } else if (reason.equals(SYSTEM_RECENT_APPS)) {  
                        // long home key处理点  
                    }  
                }  
            }  
        }  
    } 其次,生成且注册之receiver = new HomeKeyEventBroadCastReceiver();  
    registerReceiver(receiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); 
    这样试试,楼主
      

  12.   

    Intent.ACTION_CLOSE_SYSTEM_DIALOGS?
    关闭系统对话框?
    看上去不太靠谱
      

  13.   


    这个方法不错!!在4.0上按HOME按钮有效果