㈠ 安卓中Activity的onStart()和onResume()的區別是什麼
一、用戶感受不同
1、onStart():是activity界面被顯示出來的時候執行的,用戶可見。
2、onResume():是當該activity與用戶能進行交互時被執行,用戶可以獲得activity的焦點,能夠與用戶交互。
二、處理過程不同
1、onStart():是onStop()用戶再切換回這個activity就會調用onRestart()而後調用onStart()。
2、onResume():是onPause()是當前的acitivty被暫停了,比如被另一個透明或者Dialog樣式的Activity覆蓋了,之後dialog取消,activity回到可交互狀態,調用onResume()。
三、交互性不同
1、onStart():activity在上面,但沒有將它完全覆蓋,用戶可以看到部分activity但不能與交互。
2、onResume():activity在下面,用戶不能交互。
㈡ android中焦點具體指什麼,還有可見不可見具體是什麼意思
個人理解焦點就是處於最當前的狀態,比如在windows桌面上,滑鼠談掘慶移動至某個程序圖標,該圖標會高亮顯示,就是說該圖標獲含握得焦點散伍,安卓也是同理。
可見不可見相當於Windows中的文件隱藏
㈢ 安卓 View層 和 Activity層 消息傳遞機制和焦點問題
其實是activity派送出來的事件,不是無人知曉。而是這種問題不容易弄出一個關鍵字來搜索。
一個activity的touch事件先由activity的dispatchtouchevent來處理,負責派送。
dispatchtouchevent把ACTION_DOWN事件首先交給view,然後view返回false再傳遞回activity的onTouchEvent中處理。
具體的部分代碼如下:
java">if(ev.getAction()==MotionEvent.ACTION_DOWN){
onUserInteraction();
}
如果用戶需要這個ACTION_DOWN,應該在自身的onTouchEvent中對 ACTION_DOWN採取return true的響應,表示這個ACTION_DOWN歸我了。只有在dispatchtouchevent為ACTION_DOWN事件找到一個歸屬,也即是target之後,後面的ACTION_MOVE和ACTION_UP才會對這個target傳送。
如果你這個頁面就僅僅有一個這樣需要捕捉事件的view,你是可以直接在dispatchtouchevent中直接傳送給這個view然後return true的。
㈣ android彈出dialog後,activity得到焦點的問題,activity能獲得焦點,但是卻不能獲得裡面的控制項的點擊事件
你是想跳出dialog的時候,dialog裡面的控制項就獲取焦點呢還是,點擊dialog裡面的控制項獲取焦點.
點擊是自動獲取的焦點,你讓給他設置相應的點擊事件監聽.
要是點dialog以後就想讓dialog裡面的控制項獲取焦點,則要是給自己手動設置.
㈤ activity(Android組件中最重要的四大組件之一)詳細資料大全
activity是Android組件中最基本也是最為常見用的四大組件之一。Android四大組件有Activity,Service服務,Content Provider內容提供,BroadcastReceiver廣播接收器。
基本介紹
- 外文名 :Activity
- 定義 :Android系統組件
概要說明,詳細說明,基本狀態,狀態轉換,方法通知,
概要說明
Activity是Android組件中最基本也是最為常見用的四大組件(Activity,Service服務,Content Provider內容提供者,備頌孫BroadcastReceiver廣播接收器)之一。 Activity是一個應用程式組件,提供一個螢幕,用戶可以用來互動為了完成某項任務。 Activity中所有操作都與用戶密切相關,是一個負責與
用戶互動 的組件,可以通過setContentView(View)來
顯示指定控制項 。 在一個android套用中,一個Activity通常就是一個單獨的螢幕,它上面可以顯示一些控制項也可以監聽並處理用戶的事件做出回響。Activity之間通過Intent進行通信。
詳細說明
基本狀態
在android 中,Activity 擁有四種基本狀態:
- Active/Running
一個新 Activity 啟動入棧後,它顯示在螢幕最前端,處理是處於棧的最頂端(Activity棧頂),此時它處於可見並可和用戶互動的激活狀態,叫做活動狀態或者運行狀態(active or running)。 2
. Paused 當 Activity失去焦點, 被一個新的非全螢幕的Activity 或者一個透明的Activity 被放置在棧頂,此時的狀態叫做暫停狀態(Paused)。此時它依然與視窗管理器保持連線,Activity依然保持活力(保持所有的狀態,成員信息,和視窗管理器保持連線)櫻空,但是在系統記憶體極端低下的時候將被強行終止掉。所以它仍然仿鏈可見,但已經失去了焦點故不可與用戶進行互動。 3
. Sped 如果一個Activity被另外的Activity完全覆蓋掉,叫做停止狀態(Sped)。它依然保持所有狀態和成員信息,但是它不再可見,所以它的視窗被隱藏,當系統記憶體需要被用在其他地方的時候,Sped的Activity將被強行終止掉。 4
. Killed 如果一個Activity是Paused或者Sped狀態,系統可以將該Activity從記憶體中刪除,Android系統採用兩種方式進行刪除,要麼要求該Activity結束,要麼直接終止它的進程。當該Activity再次顯示給用戶時,它必須重新開始和重置前面的狀態。
狀態轉換
當一個 Activity 實例被創建、銷毀或者啟動另外一個 Activity 時,它在這四種狀態之間進行轉換,這種轉換的發生依賴於用戶程式的動作。下圖說明了 Activity 在不同狀態間轉換的時機和條件:
圖1. Activity 的狀 態轉換 如上所示,Android 程式設計師可以決定一個 Activity 的「生」,但不能決定它的「死」,也就是說程式設計師可以啟動一個 Activity,但是卻不能手動的「結束」一個 Activity。當你調用 Activity.finish() 方法時,結果和用戶按下 BACK 鍵一樣:告訴 Activity Manager 該 Activity 實例完成了相應的工作,可以被「回收」。隨後 Activity Manager 激活處於棧第二層的 Activity 並重新入棧,同時原 Activity 被壓入到棧的第二層,從 Active 狀態轉到 Paused 狀態。例如:從 Activity1 中啟動了 Activity2,則當前處於棧頂端的是 Activity2,第二層是 Activity1,當我們調用 Activity2.finish() 方法時,Activity Manager 重新激活 Activity1 並入棧,Activity2 從 Active 狀態轉換 Sed 狀態, Activity1. onActivityResult(int requestCode, int resultCode, Intent data) 方法被執行,Activity2 返回的數據通過 data 參數返回給 Activity1。 Activity棧 Android 是通過一種 Activity 棧的方式來管理 Activity 的,一個 Activity 的實例的狀態決定它在棧中的位置。處於前台的 Activity 總是在棧的頂端,當前台的 Activity 因為異常或其它原因被銷毀時,處於棧第二層的 Activity 將被激活,上浮到棧頂。當新的 Activity 啟動入棧時,原 Activity 會被壓入到棧的第二層。一個 Activity 在棧中的位置變化反映了它在不同狀態間的轉換。Activity 的狀態與它在棧中的位置關系如下圖所示:
圖2. Activity 的狀 態 與它在 棧 中的位置 關 系 如上所示,除了最頂層即處在 Active 狀態的 Activity 外,其它的 Activity 都有可能在系統記憶體不足時被回收,一個 Activity 的實例越是處在棧的底層,它被系統回收的可能性越大。系統負責管理棧中 Activity 的實例,它根據 Activity 所處的狀態來改變其在棧中的位置。
方法通知
下面的圖顯示了Activity的重要狀態轉換,矩形框表明Activity在狀態轉換之間的回調介面,開發人員可以重載實現以便執行相關代碼,帶有顏色的橢圓形表明Activity所處的狀態。
圖 3 . Activity 的狀 態 轉換的方法和實現 在上圖中,Activity有三個關鍵的循環: 1. 整個的生命周期,從onCreate(Bundle)開始到onDestroy()結束。Activity在onCreate()設定所有的「全局」狀態,在onDestory()釋放所有的資源。例如:某個Activity有一個在後台運行的執行緒,用於從網路下載數據,則該Activity可以在onCreate()中創建執行緒,在onDestory()中停止執行緒。 2. 可見的生命周期,從onStart()開始到onS()結束。在這段時間,可以看到Activity在螢幕上,盡管有可能不在前台,不能和用戶互動。在這兩個介面之間,需要保持顯示給用戶的UI數據和資源等,例如:可以在onStart中注冊一個IntentReceiver來監聽數據變化導致UI的變動,當不再需要顯示時候,可以在onS()中注銷它。onStart(),onS()都可以被多次調用,因為Activity隨時可以在可見和隱藏之間轉換。 3. 前台的生命周期,從onResume()開始到onPause()結束。在這段時間里,該Activity處於所有 Activity的最前面,和用戶進行互動。Activity可以經常性地在resumed和paused狀態之間切換,例如:當設備准備休眠時,當一個 Activity處理結果被分發時,當一個新的Intent被分發時。所以在這些介面方法中的代碼應該屬於非常輕量級的。
㈥ android中 怎麼使新載入的activity獲得焦點~
android中,如果在業務代碼層實現控制項獲得焦點,需要先調用setFocus(),再調用requestFocus()。
如果直接使用layout布局使其中的控制項某人獲取焦點,只需要在控制項中添加一個<requestFocus />標簽。
以EditText為例:
<EditText id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:paddingBottom="4">
<requestFocus />
</EditText>
這樣在打開這個Activity時,EditText會自動獲取焦點。
㈦ Android中 所謂焦點是什麼誰能幫忙解釋一下嗎!
焦點大概就是你當前要操作的地方.
例如,你有三行輸入框,
焦點在第一行輸入框時,你打字就會輸入進第1個輸入框,
焦點在哪個上,字就會輸入到哪裡.