2017-06-20 168 views
0

以上所有內容之間的區別是什麼? 我發現各種有用的帖子,但也很混亂。根據我的理解很短這是我想出高達:Android中進程,活動,線程和任務之間的區別

  • 的線程共享相同資源的任務
  • 進程是具有獨立rersources任務。一個進程可以有 有多個線程。
  • 任務是正在執行的指令
  • 現在,這是我感到困惑的地方。在android中這些活動與所有 相關的活動如何?活動可以有多個任務,因此它必須是一個過程。但是,活動和過程之間有什麼區別。此外,我在某處讀到任務是一堆活動。它讓我感到困惑。我也讀過所有在UI線程上運行的活動,這使得區別變得更加混亂。

回答

1

你應該進程&主題與活動與任務之間進行區分。他們甚至不在同一類別中。

我們從最簡單的任務的開始。假設你不是在討論任何實際的類,即TimerTask,任務的基本概念如下。 當用戶第一次啓動您的應用程序時,會創建一個新的任務。你可以通過按下「OverviewButton」來看到這一點,用軟件按鈕的Square表示。 (在Android 5.0或更高版本上) 除非用戶從概覽屏幕中實際刪除(向左/向右滑動),否則任務不會被處置。 因此,任務實際上只是用戶的高級抽象。 就像你提到的那樣,任務有一個活動backstack,這只是一個普通的堆棧,用於跟蹤用戶的「歷史」。例如,您的應用程序已啓動,您的MainActivity將位於堆棧的底部,用戶輸入一些值,然後繼續執行新的活動。現在,這個新的活動高於上一個活動,用戶可以隨時按下「後退按鈕」,隨時返回上一個活動。

現在對於流程 & 線程的,Android的下的進程是非常相似的Linux進程,應用程序通常只被一個單一的過程中工作。如果您熟悉C這樣的語言,則操作系統會爲進程分配內存的某個部分,嘗試訪問不屬於您的進程的內存將導致「分段錯誤」。

就像你說的,一個進程可能有多個線程,假設操作系統可以管理所需的開銷。 一個進程將至少有一個線程,在android下這稱爲主線程或UI線程。線程,基本上,允許你做一些平行的工作。例如,在執行網絡操作時,您很可能需要使用它們。

現在對於活動,它們與多線程沒有直接關係。當前「活動活動」是在UI-Thread上運行的活動。所以它的所有回調都將在UI-Thread上運行,除非特別記錄不要。 活動是android框架使用的抽象,它存在於與線程的進程完全不同的級別。你可以從你想要的任何線程中調用一個Activity中定義的方法。

1

一個非常好的問題,從我的Android開發小經驗,我想貢獻。讓我們從開始..

流程

曾經打開任務管理器窗口上看到打開的應用程序?這些都是過程。在Android上,啓動應用程序時,會打開一個新進程並給出內存分配等。 活動類,導入和線程都在Android系統中創建一個進程。有時當應用程序崩潰時,您會看到一條錯誤消息「不幸com.android.bakerapp已停止。」 這意味着錯誤會導致線程,導入,活動的整個過程關閉。所以基本上流程是一般應用程序或應用程序的一部分。

活動

活動是心臟和所有Android應用的靈魂,所有的線程,喜好,觀點和佈局由Android活動類打開。它是保存視圖,傳遞信息並運行線程的容器對象。活動通過意圖彼此溝通,類中的對象擴展和方法。 活動是創建和傳達用戶界面以及用戶看到和使用的所有內容的一段代碼。它用於創建線程。這在下面討論。

線程

這一個是容易的,一個線程是基本完成某件事的過程,它的生活和工作後死亡。想象一下,您在屏幕上有一個可以查看圖片的活動,並且您希望使用庫自動將應用主題顏色設置爲圖片上最常見的顏色。

在用戶不知道的情況下做到這一點的最佳方法,也混淆了負責將圖片加載到網站視圖中的主線程是使用異步任務(在後臺運行的東西)打開線程就是一個例子的線程。

所以一個線程基本上是一個要完成的任務的生命週期,它可以是連續的(主要活動視圖和列表視圖)或短的(在圖片中查找主色)或有趣和多任務處理(下載圖片從同一時間聊天,同時與你的女朋友在WhatsApp上聊天)。

線程是所有活動和過程中最重要的部分,可以發送,接收和處理數據。

活動無法在沒有線程的情況下工作,因爲setContentview和UI本身只是另一個線程,您可以在一個活動中擁有多個線程。

快樂編碼!

https://developer.android.com/guide/components/processes-and-threads.html

相關問題