2016-07-06 70 views
0

我想用新数据重新启动我的服务,允许我释放服务中的每个对象,而不会在片段<>服务之间进行复杂的通信。回收服务关闭时间?

这个我试过,一切正常:

if(isMyServiceRunning(PlayerService.class)) 
      { 
       getActivity().stopService(intenx); 
       positionTemp--; 
       final Handler handler = new Handler(); 
       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         getActivity().startService(intenx); 
         positionTemp++; 
        } 
       }, 500); 

      } 
      else{ 
       getActivity().startService(intenx); 
      } 
     } 
    }); 

但我不知道我是否应该担心在不同的设备关闭时间?服务的可能性会超过500毫秒吗?我的摩托罗拉需要300毫秒关闭服务,然后我可以毫无问题地重新运行它。

有什么建议吗?与服务的交流并不容易,它是拥有近15种不同控件的音乐播放器等等。我认为最简单的方法就是停止当前的服务并使用新的入口变量重新启动。

回答

0

这似乎是不必要的,它会为任何用户操作添加500 ms的延迟。服务可以接受多种意图,而无需停止并重新开始。只需处理onStartCommand()中的每个新意图即可。您不需要片段和服务之间的任何复杂的通信;该片段只需将每个请求转发给该服务并让该服务完成其任务。尽管为了更好的UI,您可能需要绑定到服务,以便可以根据服务的状态更新UI。