您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

01 download youtube android application生命周期函數執行(想問一下,安卓項目從哪開始運行的呀?)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-28 17:28:36【】9人已围观

简介android生命周期有什么用在Android中,多數情況下每個程序都是在各自獨立的Linux進程中運行的。當一個程序或其某些部分被請求時,它的進程就“出生”了;當這個程序沒有必要再運行下去且系統需要

android 生命周期 有什么用

在 Android 中,多數情況下每個程序都是在各自獨立的 Linux 進程中運行的。當一個程序或其某些部分被請求時,它的進程就“出生”了;當這個程序沒有必要再運行下去且系統需要回收這個進程的內存用于其他程序時,這個 進程就“死亡”了。可以看出,Android 程序的生命周期是由系統控制而非程序自身直接控制。這和我們編寫桌面應用程序時的思維有一些不同,一個桌面應用程序的進程也是在其他進程或用戶請求時被創 建,但是往往是在程序自身收到關閉請求后執行一個特定的動作(比如從 main 函數中 return)而導致進程結束的。要想做好某種類型的程序或者某種平臺下的程序的開發,最關鍵的就是要弄清楚這種類型的程序或整個平臺下的程序的一般工作 模式并熟記在心。在 Android 中,程序的生命周期控制就是屬于這個范疇——我的個人理解:)

在 Android 系統中,當某個 activity調用 startActivity(myIntent) 時,系統會在所有已經安裝的程序中尋找其 intent filter 和 myIntent 最匹配的一個 activity,啟動這個進程,并把這個 intent 通知給這個 activity。這就是一個程序的“生”。比如我們在 Home application 中選擇 “Web browser”,系統會根據這個 intent 找到并啟動 Web browser 程序,顯示 Web browser 的一個 activity 供我們瀏覽網頁(這個啟動過程有點類似我們在在個人電腦上雙擊桌面上的一個圖標,啟動某個應用程序)。在 Android 中,所有的應用程序“生來就是平等的”,所以不光 Android 的核心程序甚至第三方程序也可以發出一個 intent 來啟動另外一個程序中的一個 activity。Android 的這種設計非常有利于“程序部件”的重用。

一個 Android 程序的進程是何時被系統結束的呢?通俗地說,一個即將被系統關閉的程序是系統在內存不足(low memory)時,根據“重要性層次”選出來的“犧牲品”。一個進程的重要性是根據其中運行的部件和部件的狀態決定的。各種進程按照重要性從高到低排列如 下:

1. 前臺進程。這樣的進程擁有一個在屏幕上顯示并和用戶交互的 activity 或者它的一個IntentReciver 正在運行。這樣的程序重要性最高,只有在系統內存非常低,萬不得已時才會被結束。

2. 可見進程。在屏幕上顯示,但是不在前臺的程序。比如一個前臺進程以對話框的形式顯示在該進程前面。這樣的進程也很重要,它們只有在系統沒有足夠內存運行所有前臺進程時,才會被結束。

3. 服務進程。這樣的進程在后臺持續運行,比如后臺音樂播放、后臺數據上傳下載等。這樣的進程對用戶來說一般很有用,所以只有當系統沒有足夠內存來維持所有的前臺和可見進程時,才會被結束。

4. 后臺進程。這樣的程序擁有一個用戶不可見的 activity。這樣的程序在系統內存不足時,按照 LRU 的順序被結束。

5. 空進程。這樣的進程不包含任何活動的程序部件。系統可能隨時關閉這類進程。

從某種意義上講,垃圾收集機制把程序員從“內存管理噩夢”中解放出來,而 Android 的進程生命周期管理機制把用戶從“任務管理噩夢”中解放出來。我見過一些 Nokia S60 用戶和 Windows Mobile 用戶要么因為長期不關閉多余的應用程序而導致系統變慢,要么因為不時查看應用程序列表而影響使用體驗。Android 使用 Java 作為應用程序 API,并且結合其獨特的生命周期管理機制同時為開發者和使用者提供最大程度的便利。

android啟動后怎么查看其里面的進程和線程

. Android中進程與進程、線程與線程之間如何通信?

1)一個 Android 程序開始運行時,會單獨啟動一個Process。

默認情況下,所有這個程序中的Activity或者Service都會跑在這個Process。

默認情況下,一個Android程序也只有一個Process,但一個Process下卻可以有許多個Thread。

2)一個 Android 程序開始運行時,就有一個主線程Main Thread被創建。該線程主要負責UI界面的顯示、更新和控件交互,所以又叫UI Thread。

3)一個Android程序創建之初,一個Process呈現的是單線程模型--即MainThread,所有的任務都在一個線程中運行,所以,MainThread所調用的每一個函數,其耗時應該越短越好,而對于比較耗時的工作,應該交給子線程去做,以避免主線程(UI線程)被阻塞,導致程序出現ANR(Application not response)

一個Activity就運行在一個線程中嗎?或者編碼時,如果不是明確安排在不同線程中的兩個Activity,其就都是在同一個線程中?那從一個Activity跳轉到另一個Activity時,是不是跳出的那個Activity就處在睡眠狀態了?

【答】 每個Activity都有一個Process屬性,可以指定該Activity是屬于哪個進程的。當然如果不明確指明,應該就是從屬于默認進程(Application指定的,如其未指定,應該就是默認主進程)。

Android中有Task的概念,而同一個Task的各個Activity會形成一個棧,只有站定的Activity才有機會與用戶交互。

原文地址:Android中的進程與線程 原文作者:江鵬

當應用程序的組件第一次運行時,Android將啟動一個只有一個執行線程的Linux進程。默認,應用程序所有的組件運行在這個進程和線程中。然而,你可以安排組件運行在其他進程中,且你可以為進程衍生出其它線程。本文從下面幾點來介紹Android的進程與線程:

1、進程

組件運行于哪個進程中由清單文件控制。組件元素——<activity>、<service>、<receiver>、<provider>,都有一個process屬性可以指定組件運行在哪個進程中。這個屬性可以設置為每個組件運行在自己的進程中,或者某些組件共享一個進程而其他的不共享。他們還可以設置為不同應用程序的組件運行在同一個進程中——假設這些應用程序共享同一個Linux用戶ID且被分配了同樣的權限。<application>元素也有process屬性,為所有的組件設置一個默認值。

所有的組件都在特定進程的主線程中實例化,且系統調用組件是由主線程派遣。不會為每個實例創建單獨的線程,因此,對應這些調用的方法——諸如View.onKeyDown()報告用用戶的行為和生命周期通知,總是運行在進程的主線程中。這意味著,沒有組件當被系統調用時應該執行很長時間或阻塞操作(如網絡操作或循環計算),因為這將阻塞進程中的其它組件。你可以為長操作衍生獨立的線程。

public boolean onKeyDown(int keyCode,KeyEvent event):默認實現KeyEvent.Callback.onKeyMultiple(),當按下視圖的KEYCODE_DPAD_CENTER或KEYCODE_ENTER然后釋放時執行,如果視圖可用且可點擊。

參數

keyCode-表示按鈕被按下的鍵碼,來自KeyEvent

event-定義了按鈕動作的KeyEvent對象

返回值

如果你處理事件,返回true;如果你想下一個接收者處理事件,返回false。

當內存剩余較小且其它進程請求較大內存并需要立即分配,Android要回收某些進程,進程中的應用程序組件會被銷毀。當他們再次運行時,會重新開始一個進程。

當決定終結哪個進程時,Android會權衡他們對用戶重要性的相對權值。例如,與運行在屏幕可見的活動進程相比(前臺進程),它更容易關閉一個進程,它的活動在屏幕是不可見(后臺進程)。決定是否終結進程,取決于運行在進程中的組件狀態。關于組件的狀態,將在后面一篇——組件生命周期中介紹。

2、線程

雖然你可能會將你的應用程序限制在一個進程中,但有時候你會需要衍生一個線程做一些后臺工作。因為用戶界面必須很快地響應用戶的操作,所以活動寄宿的線程不應該做一些耗時的操作如網絡下載。任何不可能在短時間完成的操作應該分配到別的線程。

線程在代碼中是用標準的Java線程對象創建的,Android提供了一些方便的類來管理線程——Looper用于在線程中運行消息循環、Handler用戶處理消息、HandlerThread用戶設置一個消息循環的線程。

Looper類

該類用戶在線程中運行消息循環。線程默認沒有消息循環,可以在線程中調用prepare()創建一個運行循環;然后調用loop()處理消息直到循環結束。大部分消息循環交互是通過Handler類。下面是一個典型的執行一個Looper線程的例子,分別使用prepare()和loop()創建一個初始的Handler與Looper交互:

1. Android中進程與進程、線程與線程之間如何通信?

1)一個 Android 程序開始運行時,會單獨啟動一個Process。

默認情況下,所有這個程序中的Activity或者Service都會跑在這個Process。

默認情況下,一個Android程序也只有一個Process,但一個Process下卻可以有許多個Thread。

2)一個 Android 程序開始運行時,就有一個主線程Main Thread被創建。該線程主要負責UI界面的顯示、更新和控件交互,所以又叫UI Thread。

3)一個Android程序創建之初,一個Process呈現的是單線程模型--即MainThread,所有的任務都在一個線程中運行,所以,MainThread所調用的每一個函數,其耗時應該越短越好,而對于比較耗時的工作,應該交給子線程去做,以避免主線程(UI線程)被阻塞,導致程序出現ANR(Application not response)

一個Activity就運行在一個線程中嗎?或者編碼時,如果不是明確安排在不同線程中的兩個Activity,其就都是在同一個線程中?那從一個Activity跳轉到另一個Activity時,是不是跳出的那個Activity就處在睡眠狀態了?

【答】 每個Activity都有一個Process屬性,可以指定該Activity是屬于哪個進程的。當然如果不明確指明,應該就是從屬于默認進程(Application指定的,如其未指定,應該就是默認主進程)。

Android中有Task的概念,而同一個Task的各個Activity會形成一個棧,只有站定的Activity才有機會與用戶交互。

原文地址:Android中的進程與線程 原文作者:江鵬

當應用程序的組件第一次運行時,Android將啟動一個只有一個執行線程的Linux進程。默認,應用程序所有的組件運行在這個進程和線程中。然而,你可以安排組件運行在其他進程中,且你可以為進程衍生出其

很赞哦!(9)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:辽宁朝阳建平县

工作室:小组

Email:[email protected]