freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-面向android系統(tǒng)的測(cè)試工具(參考版)

2025-01-20 01:36本頁(yè)面
  

【正文】 ?? Foo[] localArray = mArray。 i++) { ?? sum += mArray[i].mSplat。 ?? for (int i = 0。 ?? static Foo mArray[] = new Foo[27]。你最好使用 foreach 處理 ArrayList對(duì)象,但是對(duì)其他集合對(duì)象, foreach 相當(dāng)于使用 iterator。使用 ”final”只能使本地變量看起來(lái)更清晰些 (但是也有些時(shí)候這是必須的,比如在 使用匿名內(nèi)部類(lèi)的時(shí)候 )(xing:原文是 or you have to, . for use in an anonymous inner class) 謹(jǐn)慎使用 foreach 可以用在實(shí)現(xiàn)了 Iterable 接口的集合類(lèi)型上。舉例說(shuō),如果編譯器知道一個(gè) ”getter”方法不會(huì)被重載,那么編譯器會(huì)對(duì)其采用內(nèi)聯(lián)調(diào)用。用到 intVal 的代碼被直接替換成 42,而使用 strVal 的會(huì)指向一個(gè)字符串常量,而不是使用成員變量。 ?? static final String strVal = “Hello, world!”。當(dāng)以后要用到這些值的時(shí)候,會(huì)在成員變量表中查找到他們。 必以其會(huì)生成一個(gè)叫做的初始化類(lèi)的方法,當(dāng)類(lèi)第一次被使用的時(shí)候這個(gè)方法會(huì)被執(zhí)行。 使用常量 讓我們來(lái)看看這兩段在類(lèi)前面的聲明: ?? static int intVal = 42。 ?? } ?? } 這里有 4 次訪(fǎng)問(wèn)成員變量 mScrollBar,如果將它緩存到本地, 4 次成員變量訪(fǎng)問(wèn)就會(huì)變成4 次效率更高的棧變量訪(fǎng)問(wèn)。 ?? ( ?? puteHorizontalScrollRange(), ?? puteHorizontalScrollOffset(), ?? puteHorizontalScrollExtent(), false)。 ?? if (size= 0) { ?? size = mScrollBarSize。 i ()。如下面方法所示,在每次循環(huán)的時(shí)候都會(huì)調(diào)用 getCount()方法,這樣做比你在一個(gè) int 先把結(jié)果保存起來(lái)開(kāi)銷(xiāo)大很多。 i++) dumpItems(items[i])。 大連海洋大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 第 5 章 設(shè)計(jì)思想 24 ? for (int i = 0。 再好改成這樣: ? int count = 。 i ? 。在通用的接口定義中,可以依 照 OO 的方式定義 getters 和 setters,但是在一般的類(lèi)中,你應(yīng)該直接訪(fǎng)問(wèn)變量。 在 Android 上,這就不是個(gè)好主意了。 不用 getter 和 setter 在很多本地語(yǔ)言如 C++中,都會(huì)使用 getter(比如: i = getCount())來(lái)避免直接訪(fǎng)問(wèn)成員變量 (i = mCount)。 虛方法執(zhí)行的更快,因?yàn)樗梢员恢苯诱{(diào)用而不需要一個(gè)虛函數(shù)表。如果有些地方你不能確定,先避免使用 Map,剩下的交給 IDE 提供的重構(gòu)功能好了。調(diào)用一個(gè)接口的引用會(huì)比調(diào)用實(shí)體類(lèi)的引用多花費(fèi)一倍的時(shí)間。 哪個(gè)更好呢 ? 按照 傳統(tǒng)的觀(guān)點(diǎn) Map 會(huì)更好些,因?yàn)檫@樣你可以改變他的具體實(shí)現(xiàn)類(lèi),只要這個(gè)類(lèi)繼承自 Map 接口。 假設(shè)你有一個(gè) HashMap 對(duì)象,你可以將它聲明為 HashMap 或者 Map: Map myMap1 = new HashMap()。 當(dāng)你在處理字串的時(shí)候,不要吝惜使用 (), ()等特殊實(shí)現(xiàn)的方法 (specialty methods)。當(dāng)然在 API 的內(nèi) 部,你仍要盡可能的提高代碼的效率 ) 總體來(lái)說(shuō),就是避免創(chuàng)建短命的臨時(shí)對(duì)象。 (也有例外的情況,就是當(dāng)你建立一個(gè) API,讓別人調(diào)用它的時(shí)候。同理,這試用于所有基本類(lèi)型的組合。 一個(gè)更極端的例子是,把多維數(shù)組分成多個(gè)一維數(shù)組。這樣你就有一個(gè)新的 String 對(duì)象,它與原始數(shù)據(jù)共享一個(gè) char 數(shù)組。 所以,除非必要,應(yīng)盡量避免盡力對(duì)象的實(shí)例。雖然 GC 為每個(gè)線(xiàn)程都建立了臨時(shí)對(duì)象池,可以使創(chuàng)建對(duì)象的代價(jià)變得小一些,但是分配內(nèi)存永遠(yuǎn)都比不分配內(nèi)存的代價(jià)大。所以不要寄希望于編譯器可以拯救你的程序。 ),下面提到的這些 原則都是成立的。 當(dāng)我們開(kāi)門(mén)見(jiàn)山、直擊主題之前,還必須要提醒大家一點(diǎn):不管 VM 是否支持實(shí)時(shí)(JIT)編譯器 (xing:它允許實(shí)時(shí)地將 Java 解釋型程序自動(dòng)編譯成本機(jī)機(jī)器語(yǔ)言,以使程序執(zhí)行的速度更快。如果大家都按照這些規(guī)則去做,駕駛就會(huì)很順暢,但是如果你不這樣做,你可能會(huì)車(chē)毀人亡。因?yàn)樗械某绦蚨歼\(yùn)行在同一個(gè)設(shè)備之上,都在一起,這就如果在同一條路上行駛的汽車(chē)。 Android 的成功依賴(lài)于你的程序提供的用戶(hù)體驗(yàn)。但是在手持設(shè)備上,你別無(wú)選擇。 有些人可能馬上會(huì)跳出來(lái),把本節(jié)的大部分內(nèi)容歸于 “草率的優(yōu)化 ”(xing:參見(jiàn) [The Root of All Evil]),不可否認(rèn)微優(yōu)化 (microoptimization。 大連海洋大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 第 5 章 設(shè)計(jì)思想 25 對(duì)于占用資源的系統(tǒng),有兩條基本原則: 不要做不必要的事 不要分配不必要的內(nèi)存 。這些設(shè)備并沒(méi)有那么快,并且受電池電量的制約。但是,即使是 “最快 ”的手持設(shè)備,其性能也趕不上一臺(tái)普通的臺(tái)式電腦。編寫(xiě)高效的 Android 代碼 , 雖然如此說(shuō),但似乎并沒(méi)有什么好的辦法: Android 設(shè)備是嵌入式設(shè)備。在面向?qū)ο蟮男g(shù)語(yǔ)中,很多類(lèi)似情況都是發(fā)生在方法級(jí),關(guān)于實(shí)際的代碼順序,循環(huán)等。 這就是為什么需要寫(xiě)高效的代碼:你不能假設(shè)手機(jī)與桌面系統(tǒng)和服務(wù)器一樣提速。對(duì)于嵌入式設(shè)備而言,摩爾定律意味著更多特性和更好的電池壽命 。在嵌入式界的趨勢(shì)是利用這種晶體管密度的增加來(lái)造出更小、更節(jié)能的芯片,從而使手機(jī)更小,電池待機(jī)時(shí)間更長(zhǎng)。對(duì)于轉(zhuǎn)面和服務(wù)器應(yīng)用而言,由于性能的提高,這意味著你可以在一塊差不多大小的芯片中得到更高的速度。 摩爾定律沒(méi)有如同應(yīng)用于桌面和服務(wù)器應(yīng)用一樣真正地應(yīng)用于移動(dòng)設(shè)備?,F(xiàn)在,在計(jì)算界中有一個(gè)趨勢(shì),該趨勢(shì)假設(shè)摩爾定律可以最終解決所有問(wèn)題。 速度快 Android 應(yīng)用應(yīng)該是快速的。然而,每個(gè)平臺(tái)實(shí)現(xiàn)它們的方法不同 。響應(yīng)及時(shí)以及無(wú)縫。盡管 Android 團(tuán)隊(duì)已經(jīng)構(gòu)造了一個(gè)強(qiáng)健的內(nèi)核系統(tǒng),但用戶(hù)更多的體驗(yàn)是來(lái)自于與你應(yīng)用的交互。那不是一個(gè)高效率的過(guò)程 。然后, 注意 平臺(tái)的細(xì)微差別。 學(xué)習(xí)如何在一個(gè)新的API 上創(chuàng)建應(yīng)用的過(guò)程都是類(lèi)似的,即便平臺(tái)本身存在很大差異性。 . 操作流程 運(yùn)行程序,在 Test 程序中按下 SelectFile 鍵,程序獲取 AP 信息,獲取之后自動(dòng)化測(cè)試開(kāi)始執(zhí)行,測(cè)試結(jié)束,測(cè)試結(jié)果在測(cè)試畫(huà)面顯示。 PC 機(jī)上運(yùn)用 Eclipse 編輯程序代碼以及對(duì)程序代碼進(jìn)行調(diào)試,利用 Android 模擬器進(jìn)行程 序的測(cè)試。 對(duì)于復(fù)雜的應(yīng)用 bindService () 方式,雖然帶來(lái)的更多的編碼,但同時(shí)也帶來(lái)了更好的可操作性,使其使用起來(lái)更 方便。大大加強(qiáng)了 Service 的靈活性、可操作性。 2. 控制方式 :前者的控制方式需要使用固定的方法,對(duì) Service 進(jìn)行單一的操作。 } })。 } })。 } })。 ()。 btnGetData = (Button) findViewById()。 btnBind = (Button) findViewById()。 public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 binder = () service。 // 定義一個(gè) ServiceConnection 對(duì)象 private ServiceConnection conn = new ServiceConnection() { // 當(dāng)客戶(hù)端與 Service 斷開(kāi)連接時(shí) Override public void onServiceDisconnected(ComponentName name) { (onServiceDisconnected)。 private Button btnGetData。 public class MainActivity extends Activity { private Button btnBind。 import 。 import 。 import 。 import 。 } } MainActivty package 。 }大連海洋大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 第 3 章 測(cè)試工具介紹 18 Override public boolean onUnbind(Intent intent) { (onUnbind)。 (onDestory)。 } } }.start()。 // 啟動(dòng)一條線(xiàn)程修改成員變量屬性 new Thread() { Override public void run() { while (!quit) { try { (1000)。 // 返回給客戶(hù)端一 個(gè) Binder 對(duì)象 return binder。 // 新建一個(gè) Binder 對(duì)象用于提供給客戶(hù)端 public class MyBinder extends Binder { public int getCount() {大連海洋大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 第 3 章 測(cè)試工具介紹 17 return count。 private boolean quit。 import 。 import 。再在這個(gè)類(lèi)里聲明一個(gè) Ibinder 的子類(lèi)對(duì)象用于提供于客戶(hù)端,同時(shí)可以定義一些成員變量,客戶(hù)端可以獲取到這個(gè)成員變量屬性 在 文件中注冊(cè)這個(gè) Service 在 Activity 里通過(guò) bindService 綁定 Service 示例代碼: package 。 二、 bindService 方法啟動(dòng) Service 先看 bindSerivce(Intent service,ServiceConnection conn,int flags)函數(shù) 參數(shù)說(shuō)明: service:通過(guò)該參數(shù)也就是 Intent 我們可以啟動(dòng)指定的 Service conn:該參數(shù)是一個(gè) ServiceConnection 對(duì)象,這個(gè)對(duì)角用于監(jiān)聽(tīng)訪(fǎng)問(wèn)者(也可以說(shuō)成是客戶(hù)端)與 Service 之間的連接情況,當(dāng)訪(fǎng)問(wèn)者與 Service 連接成功時(shí)將回調(diào)ServiceConnection 對(duì)象的 onServiceConnected(ComponentName name,Ibinder service)方法;如果斷開(kāi)將回調(diào) onServiceDisConnected(CompontName name)方法 flags:指定綁定時(shí)是否自動(dòng)創(chuàng)建 Service。 } })。 } })。 ()。 Button btnStop = (Button) findViewById()。 setContentView()。 import 。 import 。 import 。 (intent, startId)。 ()。 ()。 public class MyService extends Service { Override public IBinder onBind(Intent arg0) { // TODO Autogenerated method stub return null。 import 。 Service 概覽: 類(lèi)結(jié)構(gòu)圖: Service 生命周期: 三個(gè)生命周期函數(shù): onCreate() onStart() onDestory 生命周期圖: 大連海洋大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 第 3 章 測(cè)試工具介紹 13 . Service 啟動(dòng) 啟動(dòng) Service 的兩種方式: startService 和 bindService 一、 startService 啟動(dòng) Service 示例: 先創(chuàng)建一個(gè)類(lèi)繼承于 Service 然后重寫(xiě) onBind()[且這個(gè)方法必須實(shí)現(xiàn) ], onCreate()、onStart()、 onDestory()方法 在 中注冊(cè)剛才寫(xiě)的這個(gè) Service view plainprint? service android:name=.MyService intentfilter action android:n
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1