新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第1頁
新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第2頁
新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第3頁
新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第4頁
新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

-Android編程基礎(chǔ)封面Android應(yīng)用開發(fā)3使用Bundle在Activity間傳遞數(shù)據(jù)從源Activity中傳遞數(shù)據(jù)/數(shù)據(jù)寫入IntentIntent openWelcomeActivityIntent=new Intent();Bundle myBundelForName=new Bundle(); myBundelForName.putString(Key_Name,inName.getText().toString();myBundelForName.putString(Key_Age,inAge.getText().toString();openWelcomeActivityIntent.putExtras(myBundelForName);openWelcomeActivityIntent.setClass(AndroidBundel.this, Welcome.class); startActivity(openWelcomeActivityIntent);目標(biāo)Activity中獲取數(shù)據(jù)/從Intent中獲取數(shù)據(jù) Bundle myBundelForGetName=this.getIntent().getExtras(); String name=myBundelForGetName.getString(Key_Name); myTextView_showName.setText(歡迎您進(jìn)入:+name);使用Bundle在Activity間傳遞數(shù)據(jù)2從源請求Activity中通過一個Intent 把一個服務(wù)請求傳到目標(biāo)Activity中private Intent toNextIntent;/Intent 成員聲明toNextIntent=new Intent();/Intent定義toNextIntent.setClass(TwoActivityME3.this, SecondActivity3.class);/設(shè)定開啟的下一個ActivitystartActivityForResult(toNextIntent, REQUEST_ASK);/開啟Intent時候 ,把請求碼同時傳遞在源請求Activity中等待Intent返回應(yīng)答結(jié)果,通過重載onActivityResult()方法Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) / TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if(requestCode=REQUEST_ASK)if(resultCode=RESULT_CANCELED)setTitle(Cancel*);else if(resultCode=RESULT_OK)showBundle=data.getExtras();/從返回的Intent中獲得BundleName=showBundle.getString(myName);/從bundle中獲得相應(yīng)數(shù)據(jù)text.setText(the name get from the second layout:n+Name); 第一個參數(shù)是你開啟請求Intent時的對應(yīng)請求碼,可以自己定義。 第二個參數(shù)是目標(biāo)Activity返回的驗證結(jié)果碼 第三個參數(shù)是目標(biāo)Activity返回的Intent目標(biāo)Activity中發(fā)送請求結(jié)果代碼,連同源Activity請求的數(shù)據(jù)一同綁定到Bundle中通過Intent傳回源請求Activity中backIntent=new Intent();stringBundle=new Bundle();stringBundle.putString(myName, Name);backIntent.putExtras(stringBundle);setResult(RESULT_OK, backIntent);/返回Activity結(jié)果碼finish();Log與DDMS(查看Log等信息)Log.v(TAG, nextPage_Activity onStart();/設(shè)置標(biāo)簽來跟蹤程序Activity生命周期Activity狀態(tài)1 當(dāng)一個Activity 在屏幕的最上層時(對堆棧的最頂端),它就是屬于active或者running的狀態(tài)2 如果一個Activity失去焦點(focus)但還看得到它的畫面(比如:一個新的Activity畫面并不是全屏幕或者它是一個半透明的情況),那失去焦點的Activity則處在paused的狀態(tài)。像這個失去焦點的Activity它還是完全活著的,并沒有消失。(活著的意思是指,Activity自己本身所有的狀態(tài)及數(shù)據(jù)都還是存在的,也跟窗口管理程序window manager保持聯(lián)系著),像這種paused的Activity,會在一種情況下消失,那就是當(dāng)系統(tǒng)的內(nèi)存不夠用之時,系統(tǒng)會自動判斷,八部重要的Activity移除。3 如果一個Activity被其它的Activity完全的遮蓋住時,它仍然保有全部的狀態(tài)及數(shù)據(jù),但因為它已不再被使用者看見,所以它的畫面是被隱藏起來的(畫面不需要更新),當(dāng)系統(tǒng)內(nèi)存不足時,這種stop狀態(tài)的Activity時最先被系統(tǒng)考慮拿下來釋放內(nèi)存的。4 當(dāng)一個Activity處于pause或stop的狀態(tài)時,系統(tǒng)可以要求Activity結(jié)束(finish)或直接移除(kill)它。當(dāng)它需要再度呈現(xiàn)在使用者面前時,它必須要能完整的重新啟動及回復(fù)先前的狀態(tài)。Activity狀態(tài)轉(zhuǎn)換圖Android應(yīng)用開發(fā)4使用Service什么是服務(wù)(Service)服務(wù)是運行在后臺的一段代碼。它可以運行在它自己的進(jìn)程,也可以運行在其他應(yīng)用程序的上下文(context)里面,這取決于自身的需要。其他的組件可以綁定到一個服務(wù)(Service)上面,通過遠(yuǎn)程過程調(diào)用(RPC)來調(diào)用這個方法。例如:媒體播放器的服務(wù),當(dāng)用戶退出媒體選擇用戶界面,仍然希望音樂可以繼續(xù)播放,這時就是由服務(wù)(Service)來保證當(dāng)用戶界面關(guān)閉時音樂繼續(xù)播放的。如何使用服務(wù) 第一種是通過調(diào)用Context.startServece()啟動,調(diào)用Context.stoptService()結(jié)束,startService()可以傳遞參數(shù)給Service。 第二種方式是通過調(diào)用Context.bindService()啟動,調(diào)用Context.unbindService()結(jié)束,還可以通過ServiceConnection訪問Service。二者可以混合使用,比如說我可以先startServece()再unbindService()。Service的生命周期 startService()后,即使調(diào)用startService()的進(jìn)程結(jié)束了,Service仍然還存在,知道有進(jìn)程調(diào)用stoptService(),或者Service自己自殺(stopSelf())就沒法了 bindService()后,Service就和調(diào)用bindService()的進(jìn)程同生共死,也就是說當(dāng)調(diào)用bindService()的進(jìn)程死了,那么它bind的Service也要跟著被結(jié)束,當(dāng)然期間也可以調(diào)用unbindService()讓Service結(jié)束 兩種方式混合使用時,比如說你startService()了,我bindService()了,那么只有你stoptService()了而且我也unbindService()了,這個Service才會被結(jié)束。進(jìn)程生命周期 Android系統(tǒng)將會嘗試保留那些啟動了的或者時綁定了的服務(wù)進(jìn)程 如果該服務(wù)正在進(jìn)程的onCreate(),onStart()或者onDestroy()這些方法中執(zhí)行時,那么主進(jìn)程將會成為一個前臺進(jìn)程,以確保此代碼不會被停止 如果服務(wù)已經(jīng)開始,那么它的主進(jìn)程會就重要性而言低于所有可見的進(jìn)程但高于不可見的進(jìn)程,由于只有少數(shù)幾個進(jìn)程是用戶可見的,所以只要不是內(nèi)存特別低,該服務(wù)不會停止。 如果有多個客戶端綁定了服務(wù),只要客戶端中的一個對于用戶是可見的,即認(rèn)為該服務(wù)可見使用服務(wù)進(jìn)行音樂播放Manifest.xml中的Service定義 Service子類中的Player public void onStart(Intent intent, int startId) super.onStart(intent, startId); player = MediaPlayer.create(this, R.raw.seven_days); player.start(); public void onDestroy() super.onDestroy(); player.stop(); Activity中定義的Intent開啟相應(yīng)的ServicestartService(new Intent(com.liangshan.wuyong.START_AUDIO_SERVICE);stopService(new Intent(com.liangshan.wuyong.START_AUDIO_SERVICE);Android UI布局Activityu Android 應(yīng)用程序基本功能單元u 本身沒有任何屏幕存在View 和Viewgroupu 表示在Android 平臺上的基本用戶界面單元Viewsu android.view.View 為指定的屏幕矩形區(qū)域存儲布局和內(nèi)容 處理尺寸和布局,繪制,焦點改變,翻屏,按鍵、手勢 widget基類文本 TextView輸入框 EditText輸入法 InputMethod活動方法 MovementMethod按鈕 Button單選按鈕 RadioButton復(fù)選框 Checkbox滾動視圖ScrollViewViewgroupsu android.view.Viewgroup 包含并管理下級系列的Views和其他Viewgroup 布局的基類UI樹狀結(jié)構(gòu)u Android中的Activity 定義使用一個view和iewgroup的樹狀節(jié)點u setContentView()方法 被Activity調(diào)用來把樹狀節(jié)點連接到屏幕渲染LayoutParams (布局參數(shù))u 每一個viewgroup類使用一個繼承于ViewGroup.LayoutParams的嵌套類 包含定義了子節(jié)點View的尺寸和位置的屬性類型普通布局對象FrameLayoutu 最簡單的布局對象u 在屏幕上故意保留的空白空間,你可以之后填充一個單獨的對象 例如:一個你要更換的圖片u 所有子元素都釘?shù)狡聊坏淖笊辖莡 不能為子元素指定位置LinearLayoutu 在一個方向上(垂直或水平)對齊所有子元素 所有子元素一個跟一個地堆放 一個垂直列表每行將只有一個子元素(無論它們有多寬) 一個水平列表只是一列的高度(最高子元素的高度來填充)TableLayoutu 把子元素放入到行與列中u 不顯示行、列或是單元格邊界線u 單元格不能橫跨行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論