Activity, Service,Task, Process and Thread之間的關係

Activity, Service,Task, Process and Thread之間到底是什麼關係呢?

首先我們來看下Task的定義,Google是這樣定義Task的:a task is what the user experiences as an "application." It's a group of related activities, arranged in a stack. A task is a stack of activities, not a class or an element in the manifest file. 這意思就是說Task實際上是一個Activity棧,通常用戶感受的一個Application就是一個Task。從這個定義來看,Task跟 Service或者其他Components是沒有任何聯繫的,它只是針對Activity而言的。

而Service和Activity只是Android提供的Components中的兩種,除此之外還有Content Provider和Broadcast Receiver。

通常情況下,對於一個應用程序的所有的Components都會在同一個Process產生的Main Thread中運行。但是我們也可以讓不同的Component運行在不同的Process當中,我們可以通過設置這些Components的屬性來使其 運行在不同的Process當中,例如:<activity android: process = "processA">。當然我們也可以設置使他們運行在同一個Process當中,即使他們不在同一個應用程序當中也可以(前提是這些應用程序使 用的是同一個Linux User ID,並且被同一個機構簽名)。

那麼Thread跟這些Components又有什麼關係呢?

通常我們會將一些長時間或大計算量的操作用一個單獨的線程來運行,以防止類似操作阻塞Process。比如我們可以爲一個Service(如播放音 樂的Service)產生一個Thread,我們也可以爲Methods來產生一個線程。總之當你不想讓某些操作阻塞Main Thread的時候,create a thread!

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