Xutils源碼檔案下載方法的調用流程,xutils源碼

來源:互聯網
上載者:User

Xutils源碼檔案下載方法的調用流程,xutils源碼

//我主要是好奇Xutils是在哪裡回調onLoading(),找老半天沒找到,好不容易找到就寫下來吧

前言:

  1.僅對主要程式碼進行摘要,提供大致流程

  2.為便於理解,本文變數名不同於源碼變數名,而是類名的駝峰式寫法。如源碼中:WorkRunnable mWorker,在本文中為 workRunnable

  3.需要配合看Xutils的源碼,可以讓你看Xutils原始碼時減少一定的難度


代碼主幹:

HttpFragment:

//HttpFragment是Xutils內建例子中的一個類
httpUtils = new HttpUtils();
httpUtils.send(mthord, url, params, callback{ onStart(), onLoading(), onSuccess(),  onFailure, })

HttpUtils:
httpRequest = new HttpRequest(method, url);httpUtils.sendRequest(request, params, callback);httpHandler = new Handler<T>(httpClient, httpContext, resoponseTextCharset, callBack);httpRequest.setRequestParams(params, httpHandler);httpHandler.executeOnExcutor(priorityExecutor, request);

PriorityAsynTask == HttpHandler:
//HttpHandler extends PriorityAsyncTask,故以下方法實際上調用的是HttpHandler中的方法
//Thread可以執行的有兩類介面 1.Runable()介面 2.Callable介面//區別是分別調用run()、call()開線程;後者有返回值,可取消作業,可以返回異常//然而想要用Thread調用Callable需要用FutreTask封裝,FutureTask實現了Runable介面,done()方法在作業結束後執行,可用來判斷下載成功、取消等狀態;
//下面兩行代碼是初始化,不在執行順序中workRunnable{ call(){ return postResult(doInBackground(parmas)}};futureTask = new FutureTask<Result>(workRunnable){ done( postResultIfNotInvoke())};
workRunnable.mParams = params;priorityExecutor.execute(new PriorityRunnable(priority, futureTask));
PriorityExecutor://用線程池來開線程threadPoolExecutor.execute(new PriorityRunnable(priority, futrueTask))

PriorityRunnable:
//futureTask是workRunnable封裝類,調用的是workRunnable裡的方法,即postResult(doInBackground(parmas);
futrueTask.run();

HttpHandler://終於運行HttpHandler的doInBackground了httpHandler.doInBackground();httpHandler.sendRequest(httpRequest);httpResponse = client.execute(httpRequest, context);handleResponse(httpResponse);fileDownloadHandler.handleEntity(httpEntity, httpHandler, charset);
StringDownloadHandler://終於到下載處理階段了。O(∩_∩)O哈哈~     while ((line = reader.readLine()) != null) {       httpHandler.updateProgress(total, current, false)    }
HttpHandler:httpHandler.publishProgress(UPDATE_LOADING, total, current);
//values = new Progress[]{UPDATE_LOADING, total, current}; 利用Java的不確定數量的形參機制,即(Profress... )//利用Handler機制通訊 handler.obtainMessage(MESSAGE_POST_PROGRESS,                     new AsyncTaskResult<Progress>(this, values))

//priorityAsyncTask就是httpHandlerasyncTaskResult.priorityAsyncTask.onProgressUpdate(values);//根據values[0]判斷為正在下載requestCallBack.onLoading(                        Long.valueOf(String.valueOf(values[1])),//檔案總大小                        Long.valueOf(String.valueOf(values[2])),//已下載大小                        isUploading);//好了到這裡就結束了,其他的開始下載、下載完、下載失敗的回呼函數的邏輯於此類似。



Eclipse怎導航到調用的一個方法的源碼

推薦使用快速鍵F3
 
怎讀取某個exe檔案的原始碼?

產生的程式是不能看到原始碼的,不過可以看到那個程式的資源,用E-Code Explorer 反組譯碼調試由易語言編譯產生的易格式可執行檔,分析內部結構,查看其中的各項資料。

【功能簡介】
1。格式分析:分析易格式可執行檔的總體結構,查看對應項的資料。分別對PE骨骼(PE頭)和易格式原體分析,以樹形結構清晰的顯示,同時輔以詳細的分析表格。
2。反組譯碼分析:快速的靜態反組譯碼易格式可執行檔。提供方便的跳轉、調用目標地址的代碼預覽功能。
3。表單分析:對易格式可執行檔中包含的表單資料分析。以樹型結構清晰的顯示表單單元的從屬結構。詳細的控制項屬性顯示、準確的事件處理函數定位、與反組譯碼模式便捷的切換,讓使用者可以立即進入要調試的事件函數領空,避免在runtime的空間裡四處打轉浪費時間。這一點對於調試非線性事件驅動類型的程式是必須的。
4。符號修飾:可以調用易語言支援庫作為符號表,對反組譯碼後的代碼進行修飾,可以直接分析出函數所調用的方法,操作的屬性,使用到的常量、基礎資料型別 (Elementary Data Type)、自訂資料類型和視窗單元。極大地提高了代碼的可讀性。
5。內部資料分析:能夠分析出程式使用到的常量、API函數、服務,調用的支援庫。
6。多種載入方式:支援從檔案載入和從某一進程的記憶體中直接載入反組譯碼。直接從進程列表附加,可以避免一部分AntiDebug造成的調試困難。
7。支援多種格式:支援標準PE可執行檔,易格式原體檔案,其他類型的易格式檔案。均可正確分析。
8。易格式捕捉者:對於不明外殼的易格式可執行檔(如:加殼後的,通過其它手段封裝的),能夠方便快速的進行分析。
9。提供十六進位檔案查看功能。
10。提供多種協助工具輔助,完成從記憶體dump易格式原體、修複重定位資訊、易格式原體產生EXE檔案等功能。
11。分析結果和反組譯碼結果均可直接匯出產生報告檔案。
12。支援自訂反組譯碼,HEX查看的環境顏色,你可以選擇自己喜歡的顏色來閱讀代碼。
13。詳細的分析設定,可以自己設定最合適的調試環境。
14。提供檔案拖放功能,直接進行分析或調試。
15。支援從命令列擷取要分析的檔案。
其他更多的功能等待您在使用中發現…………
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.