TestService.java
MainActivity.java
運作結果:
會看到控制台會不斷的列印,但是螢幕會失去焦點,不能操作,等十幾秒後出現ANR異常。
我們再看看DDMS中程序和線程
可以看到即沒有新的程序,也沒有新的線程。
這充分說明Service即不是一個程序也不是一個 線程,而是一個綁定在程序中的服務,我們如果要在Service中處理延時操作應該放線上程中。
現在我們将輸出Log的代碼放入線程,啟動Service後在MainActivity中用stopService來停止Service.
會發現已經調用了Service的onDestory方法,為什麼還在列印Log?其實Service此時卻是确實已經destroy了,但是我們啟動的線程還存在,是以繼續列印。
其實Service還有一個停止的方法stopSelf()