我應該使用什麼使一個應用程序,它會:服務VS螺紋
- 詢問用戶名和密碼
- 授權
- 運行的無限循環中,它會獲取一些數據從網站每隔10秒左右。
我希望能夠在此期間完成一些基本任務,或鎖定我的屏幕而不會導致線程死亡。我不希望服務在關閉應用程序後繼續運行,我只是想確保線程在運行很長時間後永遠不會被殺死。
我也想問:服務和線程交互是否容易?我可以通過一個CancellationToken
並取消它,當用戶按下停止按鈕?
我還發現setThreadPriority
,它會幫助我的情況嗎?
我應該使用什麼使一個應用程序,它會:服務VS螺紋
我希望能夠在此期間完成一些基本任務,或鎖定我的屏幕而不會導致線程死亡。我不希望服務在關閉應用程序後繼續運行,我只是想確保線程在運行很長時間後永遠不會被殺死。
我也想問:服務和線程交互是否容易?我可以通過一個CancellationToken
並取消它,當用戶按下停止按鈕?
我還發現setThreadPriority
,它會幫助我的情況嗎?
服務和線程是完全不同的概念。線程是一個並行執行的獨立進程。服務是應用程序的一個組件,它沒有UI並且運行在一個單獨的生命週期中。服務不在其自己的線程上運行,它在UI線程上運行(儘管它可以在需要時啓動線程)。
如果您想執行一些任務但不綁定到Android Activity生命週期,則使用服務。如果要並行運行,則使用線程。如果你想要兩個,那麼你使用一個啓動線程的服務。
從我正在閱讀的內容(您不希望線程在活動完成後繼續)中,您需要線程而不是服務。
如果我不做任何資源昂貴,線程將無限運行嗎? – sooqua
一個線程運行,直到線程的函數返回或應用程序退出。請注意 - 應用程序退出,而不是活動。只要完成Activity就不會殺死線程,當你的Activity被銷燬時你需要取消它,以便它可以退出。 –
> _線程運行,直到線程的函數返回或應用程序退出._這是真的,但[本文](https://developer.android.com/guide/components/processes-and-threads.html)指出:持有當前對用戶不可見的活動的進程不會直接影響用戶體驗,並且系統可以隨時取消它們以回收前景,可見或服務進程的內存。 – sooqua