SimpleCommand框架介紹以及簡(jiǎn)單使用(一)
簡(jiǎn)介:
SimpleCommand是一款輕量級(jí)框架??蚣芎苄∫埠苋菀桌斫?。使用這款框架能實(shí)現(xiàn)的功能主要是快速集成網(wǎng)絡(luò)請(qǐng)求、圖片請(qǐng)求、文件操作等各種比較耗時(shí)的操作。對(duì)于網(wǎng)絡(luò)圖圖片請(qǐng)求,內(nèi)部使用的是OkHttp實(shí)現(xiàn)
使用場(chǎng)景:
此框架并不適合于短時(shí)間內(nèi)有大量請(qǐng)求的場(chǎng)景,比較適合于并發(fā)執(zhí)行4~6個(gè)異步請(qǐng)求
工程目錄介紹:
在SimpleCommand整個(gè)工程目錄下,有三個(gè)比較重要的module:app、sample、simplecommand
simplecommand:
這個(gè)是最重要的一個(gè)依賴module,所有核心功能都是在此module種完成的。主要包括以下幾個(gè)核心類:
Command:這個(gè)類是所有Command執(zhí)行者的父類。其中包含3個(gè)主要的核心方法:
start–此方法會(huì)啟動(dòng)CommandService服務(wù),并在子線程中執(zhí)行耗時(shí)操作
execute–在CommandService中回調(diào)到的方法,一般將耗時(shí)操作放在此方法中執(zhí)行
notifuListeners–通知所有的ResultListener
app:
在app module里主要是做演示功能。通過module dependency依賴到了simplecommand module。然后自定義NetworkCommand實(shí)現(xiàn)請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù)并顯示到UI界面
sample:
是一個(gè)比較完整的案例演示module。通過添加simplecommand.aar包實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求功能。具體的使用方法請(qǐng)繼續(xù)往下看!
使用步驟:以下步驟是以網(wǎng)絡(luò)請(qǐ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è)務(wù)隨便取), 并集成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中使用了,通過實(shí)現(xiàn)一個(gè)Button的點(diǎn)擊事件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"); } }
簡(jiǎn)單說明以下:AppResultReceiver是一個(gè)請(qǐng)求結(jié)果接收器, 當(dāng)我們調(diào)XXXCommand.start方法時(shí),需要傳入一個(gè)AppResultReceiver。當(dāng)請(qǐng)求結(jié)果返回之后,就會(huì)調(diào)用AppResultReceiver中的listener相應(yīng)方法:onResultSuccess、onResultFailed等等
框架github地址: SimpleCommand框架
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 六款值得推薦的android(安卓)開源框架簡(jiǎn)介
- Android Retrofit 2.0框架上傳圖片解決方案
- Android中XUtils3框架使用方法詳解(一)
- Android中使用開源框架Citypickerview實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)選擇
- Android使用Fragment打造萬能頁面切換框架
- Android開發(fā)框架之自定義ZXing二維碼掃描界面并解決取景框拉伸問題
- Android Volley框架全面解析
- 淺析KJFrameForAndroid框架如何高效加載Bitmap
- 簡(jiǎn)略分析Android的Retrofit應(yīng)用開發(fā)框架源碼
- android上的一個(gè)網(wǎng)絡(luò)接口和圖片緩存框架enif簡(jiǎn)析
相關(guān)文章
Android編程基礎(chǔ)之簡(jiǎn)單Button事件響應(yīng)綜合提示控件Toast應(yīng)用示例
這篇文章主要介紹了Android編程基礎(chǔ)之簡(jiǎn)單Button事件響應(yīng)綜合提示控件Toast應(yīng)用,結(jié)合實(shí)例形式分析了Button事件響應(yīng)與Toast提醒的相關(guān)操作技巧,需要的朋友可以參考下2016-10-10解析Android截取手機(jī)屏幕兩種實(shí)現(xiàn)方案
這篇文章主要介紹了解析Android截取手機(jī)屏幕兩種實(shí)現(xiàn)方案,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04Android?ViewPager?+?Fragment實(shí)現(xiàn)滑動(dòng)頁面效果
本文通過實(shí)例代碼較詳細(xì)的給大家介紹了Android?ViewPager?+?Fragment實(shí)現(xiàn)滑動(dòng)頁面效果,需要的朋友可以參考下2018-06-06Android撥號(hào)盤 支持T9搜索和號(hào)碼搜索等撥號(hào)盤案例
之前做通訊錄軟件,其中在做撥號(hào)盤的時(shí)候一直為怎么實(shí)現(xiàn)T9輸入煩惱,不過最后終于是實(shí)現(xiàn)了,看社區(qū)內(nèi)好像也有不少朋友需要,在此分享一下2012-12-12Android Studio 如何刪除/新建一個(gè)module(圖文教程詳解)
這篇文章主要介紹了Android Studio 如何刪除/新建一個(gè)module,此方法也會(huì)將該module從你的硬盤中刪除,如果直接右鍵會(huì)發(fā)現(xiàn)沒有delete選項(xiàng),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧2020-03-03Android基礎(chǔ)之獲取LinearLayout的寬高
LinearLayout是線性布局控件,它包含的子控件將以橫向或豎向的方式排列,按照相對(duì)位置來排列所有的widgets或者其他的containers,超過邊界時(shí),某些控件將缺失或消失。有的時(shí)候,我們需要想獲取LinearLayout寬高,下面通過這篇文章來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11