A. android全局通用方法怎麼封裝
使用靜態類:
public class Data{
private static String a ="Hello Android";
public static String getA() {
return a;
}
public static void setA(String a) {
Data.a = a;
}
}
調用就不再寫了,直接使用類名.變數名就可以調用!
使用Application
/**
* 自定義的MyApplication繼承Application
*
*
*/
public class MyApplication extends Application {
/**
* 引發異常:在一些不規范的代碼中經常看到Activity或者是Service當中定義許多靜態成員屬性。這樣做可能會造成許多莫名其妙的 null pointer異常。
*/
/**
* 異常分析:java虛擬機的垃圾回收機制會主動回收沒有被引用的對象或屬性。在內存不足時,虛擬機會主動回收處於後台的Activity或
* Service所佔用的內存。當應用再次去調用靜態屬性或對象的時候,就會造成null pointer異常
*/
/**
* 解決異常:Application在整個應用中,只要進程存在,Application的靜態成員變數就不會被回收,不會造成null pointer異常
*/
private int number;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
B. wx小程序-request請求在項目實戰中的封裝
在小程序項目開發中,對請求做封裝是比較常見的操作,我們可以在封裝過的請求里,做一些統一處理,比如統一配置、請求攔截、錯誤異常處理、授權處理等
好了,我們直接看干貨,上代碼
在項目根目錄下新建一個request目錄,再在目錄下新建一個index.js文件,文件里的內容如下
好了,wx小程序request請求封裝就到這了
覺得效果不錯的請幫忙加個關注點個贊,經常分享前端實用開發技巧
C. 怎麼封裝請求介面url動態傳id的
怎麼封裝請求介面url動態傳id的,關於這個問題有以下解釋:一.介面文檔目錄位置
可以參考這個目錄,進行文檔的存放
二.思路
封裝介面主要分為4個版塊
(1)環境(本地/測試/正式)切換
(2)域名拼接
(3)封裝數據介面
(4)調用數據介面
三.具體思路
(1)地址環境切換
(1)首先在實際的開發過程中,
一般來說,後端會提供3個地址給到我們,
分別是本地地址、測試環境地址、正式環境地址
然後我們設置一個域名變數,
再通過三元表達式來進行本地/測試 以及 本地/正式環境的切換。
D. android 怎樣將線程池封裝到自己的網路請求底層
對非同步請求封裝 ,可用作基本項目框架來使用
1)封裝HttpClient
2)由於用到線程池,可以進行多任務網路請求操作
3)沒有網路的時候進行網路狀態檢查
4)對請求的數據根據URL進行緩存到本地sqlite資料庫中
5)本demo可以直接運行 本來想測試protobuf進行數據處理的 要放在github上就改成json了
只能提供大概輪廓,代碼還是需要你去寫,因為你的項目只能根據你想法來寫
E. 安卓怎麼封裝okhttp的post請求
你的參數沒有傳遞,參數通過httppost.setEntity(mpEntity)設置。 至於mpEntity你可以自己封裝。如果你直接傳一串json格式的字元串,可以這樣 Map<String, String> params = new HashMap<String, String>(); params.put(key, obj.toString); key是你的參數名,obj就是你的參數。 如果你的參數名是tel,那你的參數值就是123了,此時傳的就是json了。
F. iOS 安卓的SDK是用什麼封裝的一般人是如何開發SDK的
具體來說,可以舉個有使用SDK的例子
一、基於Android系統的例子
1、准備工作:
使用Eclipse新建一個Android項目,根據要求提示填寫相關信息,然後構建APP框架
2、這里使用的是一個比分SDK,要了解所用的SDK,可獲取整個示例工程以及對應的APK安裝包進行運行。運行工程可以通過以下兩種方式進行運行:
a. 直接安裝比分SDK Demo.apk至手機進行運行
b. 在Eclipse中導入並運行比分SDKDemo工程
3、提供應用程序包名和簽名,到http://sportsdt.com留言申請應用程序的APP_KEY,得到開放介面。完成後在應用中添加SDK所需要的許可權,打開AndroidManifest.xml文件,將SDK需要的許可權添加到該文件中即可:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
4、用一個簡單的APP框架,內嵌進去一個現成的比分SDK,就可以達成以下效果:
二、基於IOS系統的例子
1、准備工作:
同上,還是要先創建一個IOS項目,這回使用的是xcode,詳細圖文可以繼續問度娘。
2、引入SMSDK.framework
將所需的SMSDK.framework拷貝到工程所在文件夾下。
在 TARGETS->Build Phases-> Link Binary With Libaries中點擊「+」按鈕,在彈出的窗口中點擊「Add Other」按鈕,選擇SMSDK.framework文件添加到工程中。
2、引入所需的第三方庫(7M SDK需要在XCode工程引入以下的第三方類庫以確保項目能夠正確運行)
通過CocoaPods安裝,將以下語句添加進工程的Podfile,然後打開終端在工程目錄執行pod install命令,運行[工程名稱].xcworkspace,開始工作!
pod 'Reachability'
pod 'Masonry'
pod 'ReactiveCocoa'
pod 'AFNetworking'
pod 'CocoaLumberjack'
pod 'Nimbus/Core', '1.0.0'
pod 'Nimbus/AttributedLabel', '1.0.0'
3、引入資源bundle
需要在Xcode工程中引入SMSDK.bundle,確保SMSDK圖片能正常顯示
4、環境配置
在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。
效果如圖:
第一次這么認真地回答一個問題,恰好用到了這個SDK,如有做體育項目的朋友也有需要,可自行搜索sportsdt,其他就不多說了。
G. 怎樣封裝安卓的系統
development kit)軟體開發工具包。被軟體開發工程師用於為特定的軟體包、軟體框架、硬體平台、操作系統等建立應用軟體的開發工具的集合。
因此,Android SDK 指的是Android專屬的軟體開發工具包。
Android是谷歌(Google)公司推出的手機開發平台。
與iPhone相似,Android採用WebKit瀏覽器引擎,具備觸摸屏、高級圖形顯示和上網功能,用戶能夠在手機上查看電子郵件、搜索網址和觀看視頻節目等,比iPhone等其他手機更強調搜索功能,界面更強大,可以說是一種融入全部Web應用的單一平台。
H. 安卓開發如何封裝一個無限參數的方法
publicstaticvoiddealArray(int...intArray){
}
publicstaticvoidmain(Stringargs[]){
dealArray();
dealArray(1);
dealArray(1,2,3);
}
...三個點:不定參數類型
I. Android開發中,如何封裝thread+handler請求,以減少大量後台請求的重復代碼
Http協議的封裝:
使用http協議有request和response這兩個主要的域,下邊是Http協議封裝的結構圖
(1)HttpRequestInter.java:作為request域對象,應該可以獲得客戶端請求的地址和httpRequest對象,這樣的話才可以獲得客戶端請求的參數等信息;另外public HttpResponseInter request() throws Exception; 使用這個方法,是當執行完request請求之後,返回一個response對象(這里用介面表示)
/**
* 請求的介面
* @author xuliugen
*/
public interface HttpRequestInter {
//獲得httpRequest
public HttpUriRequest getHttpRequest();
//獲得http請求的url地址
public String getRequestURL();
//請求服務端:要返回一個response對象
public HttpResponseInter request() throws Exception;
}
(2)HttpResponseInter.java作為和(1)中相對應的response對象,應該具有的方法:獲取返回的狀態碼、獲取返回的流、獲取返回返回的string數據等,下邊的方法就是獲取相應的數據
/**
* 響應的介面
* @author xuliugen
*/
public interface HttpResponseInter {
//返回狀態碼
public int statusCode();
// 向客戶端返迴流數
public InputStream getResponseStream() throws IllegalStateException,IOException;
//向客戶端返回位元組數組
public byte[] getResponseStreamAsByte() throws IOException;
//向客戶端返回JSON數據
public String getResponseStreamAsString() throws ParseException, IOException;
}
(3)這是HttpRequestImpl.java介面的實現類,我們可以看到我們不但實現了HttpRequestInter介面還實現了ResponseHandler 第二個就是用於當執行完request請求之後需要返回的數據,存放在一個response的Handler中。
public class HttpRequestImpl implements HttpRequestInter,ResponseHandler {
protected HttpUriRequest httpUriRequest;// 用於獲取request的url地址
private AbstractHttpClient abstractHttpClient; // client對象
// 構造犯法
public HttpRequestImpl(AbstractHttpClient httpClient) {
this.abstractHttpClient = httpClient;
}
// get方法
public HttpUriRequest getHttpRequest() {
return httpUriRequest;
}
//獲得request的url
public String getRequestURL() {
return httpUriRequest.getURI().toString();
}
//執行request請求,並返回??個response對象介面
public HttpResponseInter request() throws Exception {
return abstractHttpClient.execute(httpUriRequest, this);//傳入的ResponseHandler對象
}
/**
* 繼承ResponseHandler介面要實現的方法
* 執行完畢之後對response對象的處理介面
*/
public HttpResponseInter handleResponse(HttpResponse response)throws ClientProtocolException, IOException {
//返回實現HttpResponseInter的類:返回給一個response介面
HttpResponseInter httpResponseInter = new HttpResponseImpl(response); //返回的時候需要response
return httpResponseInter;
}
}
J. android怎麼用okhttp封裝網路框架
封裝只是為了能更加簡單,僅此而已~
功能
UI 線程切換
可選擇的Callback(任意選擇UI線程或者子線程)
參數規范化,GET與POST都一樣的傳參方式
上傳/下載進度回調
可以簡單的設置Head部分
可以每次請求時自動加上需要的參數
String/JSON/byte/File… 都能一樣簡單
用法
由於輔助代碼較多,在這里就不一一貼出來了,在這里僅僅演示如何使用。
非同步GET
Http.getAsync("http://wthrcdn.etouch.cn/weather_mini", new UiCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
log("getAsync:onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("getAsync:onSuccess:" + response);
}
}, new StrParam("citykey", 101010100)
);123456789101112
由於是 get 請求,在這里參數中的 citykey 會被自動解析到 url 中。
http://wthrcdn.etouch.cn/weather_mini?citykey=1010101001
同步GET
final String url = "http://wthrcdn.etouch.cn/weather_mini?citykey=101010100";
String str = Http.getSync(String.class, url);
log("getSync1:" + str);
str = Http.getSync(url, new ThreadCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
log("getSync2:onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("getSync2:onSuccess:" + response);
}
});
log("getSync2:" + str);12345678910111213141516
同步方式支持兩種情況,一種有Callback,一種是沒有。
當然就算加上了Callback也並不是非同步,此時方法會等到執行完成後才會繼續往下走。之所以這么干,是為了方便在callback中直接處理ui的事兒。
在這里有必要說明一下,返回類型需要進行指定,如果沒有Callback哪么需要你傳入返回類型class。
當然如果你傳入了callback,哪么此時class就由callback
Account account = Http.getSync(Account.class, url);
User user = Http.getSync(User.class, url);
String str = Http.getSync(String.class, url, new StrParam("citykey", 101010100));123
Callback 的情況也如上所示。
非同步與同步的區別在於方法名稱:
Http.getSync()
Http.getAsync()
Http.postSync()
Http.postAsync()
Http.uploadSync()
Http.uploadAsync()
Http.downloadSync()
Http.downloadAsync()
默認情況下,upload與download具有callProgress 回調進度功能。
POST
String value1 = "xxx";
String value2 = "xxx";
String url = "http://www..com";
Http.postAsync(url, new HttpCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
e.printStackTrace();
}
@Override
public void onSuccess(String response, int code) {
log(response);
}
},
new StrParam("value1", value1),
new StrParam("value2", value2));1234567891011121314151617
post 的請求方法與get基本如出一轍。
Upload
File file = getAssetsFile();
Http.uploadAsync("http://img.hoop8.com/upload.php", "uploadimg", file, new UiCallback<String>() {
@Override
public void onProgress(long current, long count) {
super.onProgress(current, count);
log("uploadAsync onProgress:" + current + "/" + count);
mUpload.setProgress((int) ((current * 100.00 / count)));
}
@Override
public void onFailure(Request request, Response response, Exception e) {
e.printStackTrace();
log("uploadAsync onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("uploadAsync onSuccess:" + response);
}
});
上傳部分也很簡單,如果需要帶有參數哪么和Post的使用方式一樣。當然此時傳入參數就不是 StrParam 而是 IOParam.
上傳的時候你可以僅僅傳遞文件+文件對應的name;或者 傳遞 IOParam; 也可以 StrParam+IOParam的方式;當然終極一點你可以傳遞:Param 類型。