2016-07-06 55 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。