service裏面的onstart()方法和onStartCommand()方法的區別

  (1):onstart()方法和onStartCommand()方法的區別:
    onstart()方法是在android2.0一下的版本中使用。而在android2.0以上則使用onstartCommand()方法。它們兩個方法放在一起使用時,不會產生衝突。

 

(2):onStartComand使用時,返回的是一個(int)整形。
    這個整形可以有四個返回值:start_sticky、start_no_sticky、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY。
    它們的含義分別是:
       1):START_STICKY:如果service進程被kill掉,保留service的狀態爲開始狀態,但不保留遞送的intent對象。隨後系統會嘗試重新創建service,由於服務狀態爲開始狀態,所以創建服務後一定會調用onStartCommand(Intent,int,int)方法。如果在此期間沒有任何啓動命令被傳遞到service,那麼參數Intent將爲null。
       2):START_NOT_STICKY:“非粘性的”。使用這個返回值時,如果在執行完onStartCommand後,服務被異常kill掉,系統不會自動重啓該服務
       3):START_REDELIVER_INTENT:重傳Intent。使用這個返回值時,如果在執行完onStartCommand後,服務被異常kill掉,系統會自動重啓該服務,並將Intent的值傳入。
      4):START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保證服務被kill後一定能重啓。

 

(3)intentservice的用法
  Android的Service阻塞時,通過Looper和Thread來解決標準Service中處理邏輯的阻塞問題。在android中,Service和activity是運行在同一個主線程中的。當其中的service程序出現睡眠5秒時,activity也會當機。
  IntenService是service的子類,用來處理異步請求。客戶端通過startService(Intent)方法傳遞請求給IntentService,IntentService通過worker thread處理每個intent對象,執行完後自動停止Service。
  intentService需要實現兩個方法:一個構造方法,複寫一個onHandleIntent()方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章