欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

SimpleCommand框架介绍以及简单使用(一)

程序员文章站 2023-12-04 09:10:22
简介: simplecommand是一款轻量级框架。框架很小也很容易理解。使用这款框架能实现的功能主要是快速集成网络请求、图片请求、文件操作等各种比较耗时的操作。对于网络...

简介:

simplecommand是一款轻量级框架。框架很小也很容易理解。使用这款框架能实现的功能主要是快速集成网络请求、图片请求、文件操作等各种比较耗时的操作。对于网络图图片请求,内部使用的是okhttp实现

使用场景:

此框架并不适合于短时间内有大量请求的场景,比较适合于并发执行4~6个异步请求

工程目录介绍:

在simplecommand整个工程目录下,有三个比较重要的module:app、sample、simplecommand

simplecommand:

这个是最重要的一个依赖module,所有核心功能都是在此module种完成的。主要包括以下几个核心类:

command:这个类是所有command执行者的父类。其中包含3个主要的核心方法:
start–此方法会启动commandservice服务,并在子线程中执行耗时操作
execute–在commandservice中回调到的方法,一般将耗时操作放在此方法中执行
notifulisteners–通知所有的resultlistener

app:

在app module里主要是做演示功能。通过module dependency依赖到了simplecommand module。然后自定义networkcommand实现请求网络数据并显示到ui界面

sample:

是一个比较完整的案例演示module。通过添加simplecommand.aar包实现网络请求功能。具体的使用方法请继续往下看!

使用步骤:以下步骤是以网络请求功能作为演示demo

1 在新建的app module中新建libs文件夹,并将sample的libs中的simplecommand.aar拷贝到此libs文件夹下

2 在你自己新建的app module的build.gragle中的android块中添加如下语句:

repositories {
 flatdir {
  dir 'libs' //注意:需要提前在app module中创建出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(类名可以自己根据业务随便取), 并集成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创建好之后, 就可以在mainactivity中使用了,通过实现一个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是一个请求结果接收器, 当我们调xxxcommand.start方法时,需要传入一个appresultreceiver。当请求结果返回之后,就会调用appresultreceiver中的listener相应方法:onresultsuccess、onresultfailed等等

框架github地址: simplecommand框架

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。