SimpleCommand框架介紹以及簡單使用(一)
簡介:
SimpleCommand是一款輕量級框架。框架很小也很容易理解。使用這款框架能實現(xiàn)的功能主要是快速集成網(wǎng)絡請求、圖片請求、文件操作等各種比較耗時的操作。對于網(wǎng)絡圖圖片請求,內(nèi)部使用的是OkHttp實現(xiàn)
使用場景:
此框架并不適合于短時間內(nèi)有大量請求的場景,比較適合于并發(fā)執(zhí)行4~6個異步請求
工程目錄介紹:
在SimpleCommand整個工程目錄下,有三個比較重要的module:app、sample、simplecommand
simplecommand:
這個是最重要的一個依賴module,所有核心功能都是在此module種完成的。主要包括以下幾個核心類:
Command:這個類是所有Command執(zhí)行者的父類。其中包含3個主要的核心方法:
start–此方法會啟動CommandService服務,并在子線程中執(zhí)行耗時操作
execute–在CommandService中回調(diào)到的方法,一般將耗時操作放在此方法中執(zhí)行
notifuListeners–通知所有的ResultListener
app:
在app module里主要是做演示功能。通過module dependency依賴到了simplecommand module。然后自定義NetworkCommand實現(xiàn)請求網(wǎng)絡數(shù)據(jù)并顯示到UI界面
sample:
是一個比較完整的案例演示module。通過添加simplecommand.aar包實現(xiàn)網(wǎng)絡請求功能。具體的使用方法請繼續(xù)往下看!
使用步驟:以下步驟是以網(wǎng)絡請求功能作為演示Demo
1 在新建的app module中新建libs文件夾,并將sample的libs中的simplecommand.aar拷貝到此libs文件夾下
2 在你自己新建的app module的build.gragle中的android塊中添加如下語句:
repositories {
flatDir {
dir 'libs' //注意:需要提前在app module中創(chuàng)建出libs文件夾
}
}
3 在app module的build.gradle的dependencies中添加如下依賴:
compile 'com.squareup.okhttp3:okhttp:3.3.1' compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0' compile (name: 'simplecommand', ext: 'aar')
4 新建HumourCommand(類名可以自己根據(jù)業(yè)務隨便取), 并集成NetworkCommand類,具體代碼如下:
package com.danny_mcoy.commandlibdemo;
import android.content.Context;
import android.net.Uri;
import android.os.Parcel;
import com.danny_mcoy.simplecommad.cmd.network.NetworkCommand;
import com.danny_mcoy.simplecommad.log.Logger;
import com.squareup.okhttp.Request;
/**
* Created by Danny_姜新星 on 3/8/2017.
*/
public class HumourCommand extends NetworkCommand {
@Override
protected String buildUrl(Context context) {
Uri.Builder builder = Uri.parse("http://api.laifudao.com")
.buildUpon();
builder.appendEncodedPath("open/xiaohua.json");
Logger.e("JIANG", "url is " + builder.toString());
return builder.toString();
}
@Override
protected Request getRequest(String url) {
return new Request.Builder()
.url(url)
.build();
}
public static final Creator<HumourCommand> CREATOR = new Creator<HumourCommand>() {
@Override
public HumourCommand createFromParcel(Parcel source) {
return new HumourCommand();
}
@Override
public HumourCommand[] newArray(int size) {
return new HumourCommand[size];
}
};
}
5 HumourCommand創(chuàng)建好之后, 就可以在MainActivity中使用了,通過實現(xiàn)一個Button的點擊事件btnClick開始 :
package com.danny_mcoy.commandlibdemo;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.danny_mcoy.simplecommad.extra.Params;
import com.danny_mcoy.simplecommad.log.Logger;
import com.danny_mcoy.simplecommad.receiver.AppResultReceiver;
public class MainActivity extends AppCompatActivity implements AppResultReceiver.ResultListener {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = ((TextView) findViewById(R.id.text_Main));
}
public void btnClick(View view) {
HumourCommand apiCommand = new HumourCommand();
AppResultReceiver receiver = new AppResultReceiver(new Handler(), this);
apiCommand.start(this, receiver);
}
@Override
public void onResultSuccess(Bundle resultData) {
if (null != resultData) {
String body = resultData.getString(Params.CommandMessage.EXTRA_BODY);
Logger.e("JIANG", " body is " + body);
textView.setText(body);
}
}
@Override
public void onResultFailed(Bundle resultData) {
Logger.e("JIANG", " failed");
}
@Override
public void onResultProgress(Bundle resultData) {
Logger.e("JIANG", " progress");
}
}
簡單說明以下:AppResultReceiver是一個請求結(jié)果接收器, 當我們調(diào)XXXCommand.start方法時,需要傳入一個AppResultReceiver。當請求結(jié)果返回之后,就會調(diào)用AppResultReceiver中的listener相應方法:onResultSuccess、onResultFailed等等
框架github地址: SimpleCommand框架
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 六款值得推薦的android(安卓)開源框架簡介
- Android Retrofit 2.0框架上傳圖片解決方案
- Android中XUtils3框架使用方法詳解(一)
- Android中使用開源框架Citypickerview實現(xiàn)省市區(qū)三級聯(lián)動選擇
- Android使用Fragment打造萬能頁面切換框架
- Android開發(fā)框架之自定義ZXing二維碼掃描界面并解決取景框拉伸問題
- Android Volley框架全面解析
- 淺析KJFrameForAndroid框架如何高效加載Bitmap
- 簡略分析Android的Retrofit應用開發(fā)框架源碼
- android上的一個網(wǎng)絡接口和圖片緩存框架enif簡析
相關文章
myeclipse android環(huán)境搭建圖文教程
在從事android應用開發(fā)過程中,搭配環(huán)境是所有開始的第一步,本文將介紹myeclipse android環(huán)境搭建圖文教程,希望可以幫助大家完成android開發(fā)之旅2012-11-11
Android入門之LinearLayout、AbsoluteLayout的用法實例講解
這篇文章主要介紹了Android入門之LinearLayout、AbsoluteLayout的用法,對于Android初學者有很好的參考借鑒價值,需要的朋友可以參考下2014-08-08
Android自定義view 你所需要知道的基本函數(shù)總結(jié)
這篇文章主要介紹了Android自定義view 你所需要知道的基本函數(shù)的相關資料,需要的朋友可以參考下2017-02-02
老生常談Listview中onItemClick中的各個參數(shù)(推薦)
下面小編就為大家?guī)硪黄仙U凩istview中onItemClick中的各個參數(shù)(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
Anroid ListView分組和懸浮Header實現(xiàn)方法
這篇文章主要介紹了Anroid ListView分組和懸浮Header實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-11-11
Android打包篇:Android Studio將代碼打包成jar包教程
這篇文章主要介紹了Android打包篇:Android Studio將代碼打包成jar包教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

